通过retrofit2将文件作为对象发送到服务器

时间:2016-08-22 11:19:28

标签: android retrofit retrofit2

我想将音频文件发送到retrofit2的服务器。我按照this教程,但文件不是服务器接受的格式。根据本教程,我尝试了以下内容:

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 }

1 个答案:

答案 0 :(得分:5)

要查找如何通过 Retroit 将文件发送到服务器,以下步骤可能会解决您的问题:

1-安装PostMan

2-在PostMan中选择10并粘贴Post,然后转到URL标签,然后选择Body

3-在form-data的部分中写入服务器文件名,在Key的部件集中键入文件并上传所需文件。

enter image description here

4-点击发送,然后点击生成代码

5-现在你有类似的事情:

enter image description here

6-现在只需一步即可转到您的改造服务并粘贴信息(例如我想上传Value):

audio.mp3

请求正文如下:

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

使用this模式并将其发送至:

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