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

标签 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 }

最佳答案

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

1- 安装 PostMan .

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

3- 在Key部分写入服务器文件名,在Value部分设置类型为File并上传想要的文件。

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");

            }
        });

关于android - 通过 retrofit2 将文件作为对象发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078192/

相关文章:

Android 主题更改复选框项目文本颜色

java - 在 Android 应用程序上存储每条记录或一列的 BLOBS

java - Moshi 无法使用泛型为类创建转换器

android - Retrofit ssl=0x717f870208 : I/O error during system call, 连接被对端重置

java - Android makedirs文件夹创建错误

android - 以编程方式定义默认 Activity (当应用程序启动时)

java - Retrofit2 如何获取重定向网址 @HEAD ("/")

multithreading - 如何将 Retrofit 2 与 Realm 和 RxJava 结合起来

android - 使用 Retrofit2 发送图像

android - 仅使用表单数据进行改造 2