问题截图如下:Debug的
1、这里已经把3张图片转码成base64的那一大串了
2、把鼠标放在imgs.toString()上看它的值,如下:
3、把鼠标放在paramValues上看传的参数的值,如下:
问题就在这里:传到后台的是红框里的而不是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大的小块传的啊.
多张图片转成base64还一起传送, 这是在考验网络传输能力吗,
根据我的经验, 一张图都划分成64K大的小块传的啊.
#1
可能你的bmp存的不是图片,而是一种“指针”性质的东西。写点测试代码看看。把字符串解密成图片试试。
#2
toString 这块狗皮膏药不是楼主以为的那样, 序列化才是.
多张图片转成base64还一起传送, 这是在考验网络传输能力吗,
根据我的经验, 一张图都划分成64K大的小块传的啊.
多张图片转成base64还一起传送, 这是在考验网络传输能力吗,
根据我的经验, 一张图都划分成64K大的小块传的啊.