通过retrofit2将文件发送到服务器作为对象
问题描述:
我想发送音频文件到服务器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 }
答
为了找到如何通过Retroit以下步骤将文件发送到服务器可以解决你的问题:
1-安装PostMan。
2-在PostMan中选择Post
并粘贴URL
然后转到Body
选项卡并选择form-data
。
由3- Key
的一部分写入服务器的文件名,并在Value
的部分集合类型文件和上传文件的愿望。
4-单击发送然后生成代码。
5-现在,您有类似以下内容:
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
什么邮递员来这里干什么?你不要使用它。 –
你需要表现出更多的代码... –