我是法国人,所以,对不起我的英语......
我正在开发一个与PHP REST服务通信的Android应用程序。因此,当我尝试将图像文件编码为Base64时,如下所示:
InputStream fileInputStream = context.getContentResolver().openInputStream(uri);
BufferedInputStream in = new BufferedInputStream(fileInputStream);
StringWriter out = new StringWriter();
int b;
while ((b = in.read()) != -1)
out.write(b);
out.flush();
out.close();
in.close();
String encoded = new String(android.util.Base64.encode(out.toString()
.getBytes(), android.util.Base64.DEFAULT));
在服务器端,我做:
$data=base64_decode(chunk_split($base64BinaryData));
结果是我的图像文件已损坏!
信息:图像由Intent制作,以仿真器模式(avd 5554)中的android.provider.MediaStore.ACTION_IMAGE_CAPTURE活动
我已经阅读了很多关于类似问题的讨论,但没有解决我的错误。
感谢您的帮助
此致
答案 0 :(得分:0)
你能放弃chunk_split吗?
另外,你可以哈希这两个二进制文件吗?也许使用sha1并看看它们是否真的不同?
答案 1 :(得分:0)
我假设:
out.toString().getBytes()
错了。什么类型的“出局”?如果那是一个图像,那么你需要获取图像的原始字节,而不是对象的字符串表示的字节。