【发布时间】:2019-06-22 08:24:28
【问题描述】:
我有以下需要上传的 json:
[{"key":"value","key1":"value1"},
[{"innerkey":"innervalue","filename":"name"},{"innerkey":"innervalue","filename":"name"}]]
JsonArray里面的两个innerkey有两个文件需要上传。
我正在使用 okhttp multipart 上传它们。
一个普通字段被添加为
multipart.addFormDataPart(key, value);
一个文件被添加为
multipart.addFormDataPart("filename", "image.jpeg", RequestBody.create(MediaType.parse("image/jpeg"), new File(path)));
我之前上传了一个非嵌套的 json,方法是将 json 转换为 hashmap 并使用 for 循环添加部分
MultipartBody.Builder multipart = new MultipartBody.Builder();
for (Map.Entry<String, String> entry : data.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if(!key.equals("filePath")){
multipart.addFormDataPart(key, value);
}else{
String filename = "";
String type = MyUtility.getMimeType(key);
filename = key.substring(key.lastIndexOf("/") + 1);
multipart.addFormDataPart("fileName", filename, RequestBody.create(MediaType.parse(type), new File(key)));
}
}
新结构似乎很难处理,我该怎么做?
【问题讨论】:
-
您好,您想上传多个具有一定价值的文件。对吗?
-
是的,但它带有嵌套的 json
-
我认为在 MultiPart POST 方法中不可能实现这种所需的格式,想象一下如何使用 postman app 共享此类数据。一种解决方案是将 文件数据 作为 Base64 编码字符串 并使用原始请求正文传递整个数据。
-
检查这个答案stackoverflow.com/a/35866301/10271334,这可能对你的情况有所帮助。
-
我认为这是一个失败的原因,任何人都可以看看这个问题,如果社区规则没问题,如果有人也回答这个问题,我愿意给予赏金。 stackoverflow.com/questions/54529577/…