问题:将图片imgs[]数组作Base64转换后,放入Map中,当通过webservice传的时候参数就不是Base64的那串很长

时间:2022-06-04 21:11:08
问题:将图片imgs[]数组作Base64转换后,放入Map<String,String>中,当通过webservice传的时候参数就不是Base64的那串很长很长的东西了。求解!先谢谢了。
问题截图如下:Debug的
1、这里已经把3张图片转码成base64的那一大串了
问题:将图片imgs[]数组作Base64转换后,放入Map中,当通过webservice传的时候参数就不是Base64的那串很长
2、把鼠标放在imgs.toString()上看它的值,如下:
问题:将图片imgs[]数组作Base64转换后,放入Map中,当通过webservice传的时候参数就不是Base64的那串很长
3、把鼠标放在paramValues上看传的参数的值,如下:
问题:将图片imgs[]数组作Base64转换后,放入Map中,当通过webservice传的时候参数就不是Base64的那串很长
问题就在这里:传到后台的是红框里的而不是base64的那一大串了,为什么啊?

关键代码给附上:
private Map<String, String> paramValues; 
private String[] imgs;
imgs = new String[Bimp.bmp.size()];
for (int i = 0; i < Bimp.bmp.size(); i++) {
imgs[i] =FileUtils.Bitmap2StrByBase64(Bimp.bmp.get(i));
}
wb_content = et_wb_content.getText().toString();
String from = "1";//1-Android 2-ios 0-网站
paramValues = new HashMap<String, String>();
paramValues.put("uid", userId);
paramValues.put("content", wb_content);
paramValues.put("from", from);
paramValues.put("imgs", imgs.toString());

params = paramValues.toString();
methodName = ConstantUtils.REALEASEWB;
resultString = CallService.queryRemoteInfor(methodName, params);

另附FileUtils中方法:
public static String Bitmap2StrByBase64(Bitmap bit){  
   ByteArrayOutputStream bos=new ByteArrayOutputStream();  
   bit.compress(CompressFormat.JPEG, 90, bos);
        byte[] bytes=bos.toByteArray();  
   return Base64.encodeToString(bytes, Base64.NO_WRAP);  
}
另附Bimp中bmp列表:
public static List<Bitmap> bmp = new ArrayList<Bitmap>();

2 个解决方案

#1


可能你的bmp存的不是图片,而是一种“指针”性质的东西。写点测试代码看看。把字符串解密成图片试试。

#2


toString 这块狗皮膏药不是楼主以为的那样, 序列化才是.
多张图片转成base64还一起传送, 这是在考验网络传输能力吗, 
根据我的经验, 一张图都划分成64K大的小块传的啊.

#1


可能你的bmp存的不是图片,而是一种“指针”性质的东西。写点测试代码看看。把字符串解密成图片试试。

#2


toString 这块狗皮膏药不是楼主以为的那样, 序列化才是.
多张图片转成base64还一起传送, 这是在考验网络传输能力吗, 
根据我的经验, 一张图都划分成64K大的小块传的啊.