android - Retrofit 2 具有不同文件名的多部分文件上传

标签 android

这是我的代码。它正常工作。但我想上传其他图像类型,如 png、jpeg 等。因此我想更改 filename=\"file1.jpeg"

另外我想同时发送不同数量的文件。

请帮我解决这个问题。谢谢。

public interface FileUploadService {  
    @Multipart
    @POST("upload")
    Call<ResponseBody> upload(@Part("description") RequestBody description,@Part("file1\"; filename=\"file1.jpeg") RequestBody file1);
}



  private void uploadFile() {  
        FileUploadService service =
                ServiceGenerator.createService(FileUploadService.class);

        RequestBody requestFile =
                RequestBody.create(MediaType.parse("multipart/form-data"), new File("/path/to/mypic.jpeg"));

        String descriptionString = "hello, this is description speaking";
        RequestBody description =
                RequestBody.create(
                        MediaType.parse("multipart/form-data"), descriptionString);

        Call<ResponseBody> call = service.upload(description, body);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call,
                                   Response<ResponseBody> response) {
                Log.v("Upload", "success");
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.e("Upload error:", t.getMessage());
            }
        });
    }

最佳答案

试试这个:

@POST("upload")
fun upload(@BODY parts: MultipartBody): Call<ResponseBody>

客户端看起来像这样:

val parts = MultipartBody.Builder()
                    .addFormDataPart(name = "name",filename = "yourDynamicFileName", RequestBody.create(...))
                    .build()
// don't forget to name an extension of your file

api.upload(parts).execute()

关于android - Retrofit 2 具有不同文件名的多部分文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236726/

相关文章:

java - 为什么这个在 Android 上更改文本的代码不起作用?

android - 如何在Fragment中使用SupportMapFragment?

android - 无法解析符号 View

android - 在Exoplayer中使用Dynamicmediasource添加多个Audio Hlsmedia源,而无需暂停当前正在播放的Player。

java - 无法连接到 selenium webdriver 中的主机 127.0.0.1 问题

android - 如何扩展HERE map 库?

java - 使用 ContextCompat 类解析资源 id 需要什么?

android - 如何以编程方式停止(强制停止)其他应用程序 Android?

android - lateinit 属性尚未用 dagger2 初始化

java - 将 JSON 值从 Integer 转换为 String