齐射在同一关键点发送多个图像

时间:2018-07-14 02:03:55

标签: android android-volley

@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;
}

1 个答案:

答案 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);