2016-09-29 4 views
0

전 서버에 이미지를 업로드 할 때 완전히 구조화되어 있습니다. 서버에서 성공적으로 응답을 받고 있지만 이미지가 서버에 업로드되지 않습니다. 항상 "이미지 삽입"을 요구하십시오. 여기 retrofit2 multipart를 사용하여 이미지를 업로드하는 방법?

은 내가

/저장납니다 실수를 Log.e(TAG, "uploadFile:File "+file);의 로그에서

private void uploadFile(Uri fileUri) { 
    File file = new File(fileUri.getPath()); 
    if (file.exists()) { 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(BASE_URL) 
       .addConverterFactory(ScalarsConverterFactory.create()) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     Log.e(TAG, "uploadFile:File "+file); 
     MediaType MEDIA_TYPE_PNG = MediaType.parse("multipart/form-data"); 

     APIInterface service = retrofit.create(APIInterface.class); 

     RequestBody requestFile = RequestBody.create(MEDIA_TYPE_PNG, file); 
     Log.e(TAG, "uploadUri: " + strEmpsno + " " + strStoreSno + " " + strLrno + " " + strRecqty + " " + strDeliverydate + " " + strDeliverytime); 
     Call<PODResponse> call = service.postFile(strEmpsno, strStoreSno, strLrno, strRecqty, strRecvol, 
       strRecwgt, strDamageqty, strLooseqty, strDeliverydate 
       , strDeliverytime, requestFile, strRemarks, strReceivedby, 
       strIpaddress); 

     call.enqueue(new Callback<PODResponse>() { 
      @Override 
      public void onResponse(Response<PODResponse> response) { 
       Log.e(TAG, "onResponse:uploadUri " + response.isSuccess()); 
       if (response.isSuccess()) { 
        Log.e(TAG, "uploadUri: " + response.body().getResult()); 
       } 
      } 

      @Override 
      public void onFailure(Throwable t) { 
       Log.e(TAG, "onFailure:uploadUri " + t.getLocalizedMessage()); 
      } 
     }); 
    } 
    } 

을 만들고있어 경우,이를 확인하시기 바랍니다 내 코드입니다/에뮬레이션/0/Audex/saved_images/logo.jpg

이것은 내 Image name with path입니다. Rest(chrome extension)에서 이미지가 서버에 저장되었지만이 코드를 사용하여 성공적으로 저장되지 않습니다. 도와주세요. 난 내 대답을 얻었다 오래 오래 시간이 지나면

+0

입니다'나는'성공적으로 서버에서 응답을 받고 있어요. 어디서 어떻게 반응합니까? – greenapps

+0

'response.body(). getResult())'. 임대차 한 곳에서 임대하십시오. – greenapps

+0

'response.body(). getResult())'여기 서버에서 응답을 얻고 있습니다. –

답변

0

사전에 여러분 모두 감사합니다

@Multipart 
@POST("/savePic") 
Call<PODResponse> postFile(
     @Part("empsno") String empsno, 
     @Part("storesno") String storesno, 
     @Part("lrSno") String lrSno, 
     @Part("recQty") String recQty, 
     @Part("recVol") String recVol, 
     @Part("recWgt") String recWgt, 
     @Part("damageQty") String damageQty, 
     @Part("looseQty") String looseQty, 
     @Part("deliveryDate") String deliveryDate, 
     @Part("deliveryTime") String deliveryTime, 
     @Part("uploadFile\"; filename=\"audex.jpg\" ") RequestBody part, 
     @Part("remarks") String remarks, 
     @Part("receivedBy") String receivedBy, 
     @Part("ipAddress") String ipAddress 
); 

처럼

내 인터페이스입니다. 나를 위해 노력한 모든 사람들에게 감사드립니다. 유일한 오류는 내가 String 대신 RequestBody를 넣었습니다.

@Multipart @POST("/savePic") Call<PODResponse> postFile( @Part("empsno") String empsno, @Part("storesno") String storesno, @Part("lrSno") String lrSno, @Part("recQty") String recQty, @Part("recVol") String recVol, @Part("recWgt") String recWgt, @Part("damageQty") String damageQty, @Part("looseQty") String looseQty, @Part("deliveryDate") String deliveryDate, @Part("deliveryTime") String deliveryTime, @Part("uploadFile\"; filename=\"audex.jpg\" ") String part, // Change here @Part("remarks") String remarks, @Part("receivedBy") String receivedBy, @Part("ipAddress") String ipAddress @Part MultipartBody.Part images ); 

@Part("uploadFile\"; filename=\"audex.jpg\" ") String part

단순히 내가 문자열로하고 마지막 추가 @Part MultipartBody.Part images에 RequestBody에서 변경했습니다. 내가 사용

** 종속성

compile 'com.squareup.retrofit2:retrofit-converters:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-scalars:2.0.2'