Base64 Android编码到PHP解码时出错

时间:2011-11-27 15:17:22

标签: php android android-emulator base64

我是法国人,所以,对不起我的英语......

我正在开发一个与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活动

我已经阅读了很多关于类似问题的讨论,但没有解决我的错误。

感谢您的帮助

此致

2 个答案:

答案 0 :(得分:0)

你能放弃chunk_split吗?

另外,你可以哈希这两个二进制文件吗?也许使用sha1并看看它们是否真的不同?

答案 1 :(得分:0)

我假设:

out.toString().getBytes()

错了。什么类型的“出局”?如果那是一个图像,那么你需要获取图像的原始字节,而不是对象的字符串表示的字节。