android - 齐射在同一个键上发送多个图像
问题描述
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("param", textcontent);
return params;
}
@Override
protected Map<String, DataPart> getByteData() throws AuthFailureError {
Map<String, DataPart> params = new HashMap<String, DataPart>();
params.put("imgs", new DataPart(id + ".jpg", getFileDataFromBitmap(selectImg[0]), "image/jpeg"));
return params;
}
我想用同一个键“imgs”将多个图像发送到服务器,所以,我试试这个代码
params.put("imgs", new DataPart(id + ".jpg", getFileDataFromBitmap(selectImg[0]), "image/jpeg"));
params.put("imgs", new DataPart(id + ".jpg", getFileDataFromBitmap(selectImg[1]), "image/jpeg"));
params.put("imgs", new DataPart(id + ".jpg", getFileDataFromBitmap(selectImg[2]), "image/jpeg"));
但是,它只是最后一次发送图像..
那么,我怎样才能发送这样的图像?
imgs.put(selectImg[0]);
imgs.put(selectImg[1]);
imgs.put(selectImg[2]);
params.put("imgs", imgs);
我的 multipartrequest 类代码在这里。(修改arraylist后,错误返回类型getByteData())
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
try {
// populate text payload
Map<String, String> params = getParams();
if (params != null && params.size() > 0) {
textParse(dos, params, getParamsEncoding());
}
// populate data byte payload
Map<String, DataPart> data = getByteData();
if (data != null && data.size() > 0) {
dataParse(dos, data);
}
// close multipart form data after text and file data
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
return bos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
解决方案
HashMap
是键值对的集合。在您的情况下,您使用相同的键添加三个不同的值。因此最后添加了一个覆盖以前的值。
创建一个ArrayList
值(在您的情况下为图像)并将其用作键的值。
ArrayList<DataPart> dataPart = new ArrayList<>();
dataPart.add(DATA-PART-1);
dataPart.add(DATA-PART-2);
dataPart.add(DATA-PART-3);
Map<String, ArrayList<DataPart>> imageList = new HashMap<>();
imageList.put(KEY, dataPart);
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组