如何在 okhttp3 中为每个多部分图像文件添加附加信息
Posted
技术标签:
【中文标题】如何在 okhttp3 中为每个多部分图像文件添加附加信息【英文标题】:How can I add additional information with each multipart image file in okhttp3 【发布时间】:2020-12-02 08:53:05 【问题描述】:在这里,我将图像文件作为多部分数据动态发送到服务器:
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("title", json);
for (int i = 0; i < imageList.size(); i++)
File imageFile = imageList.get(i).getImageFile();
if (imageFile.exists())
builder.addFormDataPart("images[" + i + "]", imageList.getName(), RequestBody.create(MediaType.parse("image"), imageFile));
MultipartBody requestBody = builder.build();
现在,我想将附加信息created_at
作为String
添加到服务器的每个图像。我怎样才能做到这一点? Retrofit/Volley 有可能吗?请帮忙。
【问题讨论】:
【参考方案1】:您可以使用以下代码实现您的目标
您的改造服务
@Multipart
@POST(value = "example/endpoint")
Call<ResponseBody> uploadImages(
@Part(value = "created_at") RequestBody createdAt,
@Part(value = "image") MultipartBody.Part image
);
如何将 String 转换为 RequestBody
RequestBody.create(String.valueOf(createdAt), MediaType.parse("text/plain"));
【讨论】:
感谢您的回答。但是此解决方案仅适用于单个图像。我想对图像列表做同样的事情,而不需要多次调用 API。 不客气,也许你可以试试@Part(value = "images") List<MultipartBody.Part>
images 而不是@Part(value = "image") MultipartBody.Part image
但是我怎样才能为对应的List<MultipartBody.Part>
添加created_at
的列表。我想创建一个自定义对象列表,其中 CustomObject 将包含两个字段MultipartBody.Part
和created_at
。有可能吗?以上是关于如何在 okhttp3 中为每个多部分图像文件添加附加信息的主要内容,如果未能解决你的问题,请参考以下文章
优雅设计封装基于Okhttp3的网络框架:多线程下载添加数据库支持(greenDao)及 进度更新