2016-08-22 3 views
2

오디오 파일retrofit2 서버로 보내고 싶습니다. 내가 this 튜토리얼을 따라 갔지만 파일이 서버가 허용하는 형식이 아닙니다. file: 속성이 전송되지 않습니다,retrofit2를 통해 파일을 서버로 보내십시오.

@Headers("Content-Type: application/json") 
@Multipart 
@POST("app/") 
Call<JResponse> upload(@Part("file") RequestBody file); 

그러나 :

RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); 
MultipartBody.Part audio = MultipartBody.Part.createFormData("file", "file", requestBody); 

및 인터페이스 :이 튜토리얼을 바탕으로 나는 다음을 시도했다. (@Part@Body으로 변경하면 다른 문제가 있음)

다음 형식으로 파일을 보내는 방법을 알고 싶습니까? 오디오 파일을 base64 형식으로 변환해야합니까? 문제를 해결할 수 있습니다 Retroit 다음 단계를 통해 서버에 파일을 보내는 방법을 찾기위한

{ 'file' : audio_file } 
+0

... –

답변

5

:

1 PostMan를 설치합니다.

2 우체부에서 다음 Body 탭으로 이동 form-data을 선택 Post를 선택하고 URL를 붙여 넣습니다. Key의 일부 쓰기 서버 파일 이름과 Value에서 '에서 파일 등의 일부 세트의 형태

3 과 욕망 파일을 업로드 할 수 있습니다. 에서

enter image description here

3- 클릭 보내기 다음 코드를 생성합니다.

enter image description here

6 이제 한 단계는 개조 서비스로 이동 (내 경우에는 내가 audio.mp3을 업로드 할) 같은 정보를 붙여 남아 :

5- 지금 당신은 다음과 같은 뭔가를

@Multipart 
    @POST("app/") 
    Call<JResponse> upload(@Part("file\"; filename=\"audio.mp3\" ") RequestBody file); 

요청 몸은 것 같은 뭔가 :

File file = new File("YOUR_PATH"); 
RequestBody temp = RequestBody.create(MediaType.parse("multipart/form-data"), file); 

사용 this 패턴과 함께 보내 : 우편 배달부 여기서 뭐하는거야 당신이 더 많은 코드를 보여줄 필요가

ServiceHelper.getInstance().sendAudio(temp).enqueue(new Callback<JResponse>() { 
      @Override 
      public void onResponse(Call<JResponse> call, Response<JResponse> response) { 
       Log.e("test", "onResponse: tst"); 

      } 

      @Override 
      public void onFailure(Call<JResponse> call, Throwable t) { 
       Log.e("test", "onResponse: tst"); 

      } 
     }); 
+0

? 이벤트를 사용하지 마십시오. –

관련 문제