2016-08-22 129 views
2

我想发送音频文件到服务器retrofit2。我遵循this教程,但该文件不是服务器接受的格式。基于此教程中,我试过如下:通过retrofit2将文件发送到服务器作为对象

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

和接口:

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

但是,没有发送file:属性。 (如果我更改@Part@Body它存在,但那么有另一个问题)

我想知道如何发送以下格式的文件?我应该将音频文件转换为base64格式吗?

{ 'file' : audio_file } 
+0

你需要表现出更多的代码... –

回答

5

为了找到如何通过Retroit以下步骤将文件发送到服务器可以解决你的问题:

1-安装PostMan

2-在PostMan中选择Post并粘贴URL然后转到Body选项卡并选择form-data

由3- Key的一部分写入服务器的文件名,并在Value的部分集合类型文件和上传文件的愿望。

enter image description here

4-单击发送然后生成代码

5-现在,您有类似以下内容:

enter image description here

6-现在只需一个步骤仍然去你的改造服务和糊状(在我来说,我要上传audio.mp3)信息:

@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

什么邮递员来这里干什么?你不要使用它。 –

相关问题