@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;
}
答案 0 :(得分:-1)
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);