Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Base64 Android编码到PHP解码出错_Php_Android_Android Emulator_Base64 - Fatal编程技术网

Base64 Android编码到PHP解码出错

Base64 Android编码到PHP解码出错,php,android,android-emulator,base64,Php,Android,Android Emulator,Base64,我是法国人,所以,我很抱歉我的英语 我正在开发一个Android应用程序,它可以与PHP REST服务进行通信。因此,当我尝试将图像文件编码为Base64时,如下所示: InputStream fileInputStream = context.getContentResolver().openInputStream(uri); BufferedInputStream in = new BufferedInputStream(fileInputStream); StringWriter out

我是法国人,所以,我很抱歉我的英语

我正在开发一个Android应用程序,它可以与PHP REST服务进行通信。因此,当我尝试将图像文件编码为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));
结果是我的图像文件已损坏

信息:该图像是通过模拟模式下的android.provider.MediaStore.ACTION_image_捕获活动(avd 5554)制作的

我已经读了很多关于类似问题的讨论,但是没有任何东西可以修复我的错误

谢谢你的帮助


您好,

您能把区块分割掉吗

另外,你能把这两个二进制文件散列吗?也许使用sha1,看看它们是否真的不同?

我假设:

out.toString().getBytes()

这是错误的。什么类型的“外出”?如果是图像,则需要获取图像的原始字节,而不是对象字符串表示的字节。

out是接收图像文件的BufferedInputStream读取的StringWriter(我用完整代码更改了我的本机帖子),您不应该向StringWriter写入,您正在使用ByTestStream,这意味着当您写入StringWriter时,它将尝试以默认编码对其进行解码,当检索字节时,它将再次使用默认编码对其进行编码,但这一次它已经删除了无法理解的“字节”。您需要在没有StringWriter的情况下获得字节数组。非常感谢,这是正确的!使用ByteArrayOutputStream而不是StringWriter来解决我的问题。事实上,哈希值完全相同!好的,我认为Android Emulator的替代图像不可用(只是在Android应用程序中可用)。我必须在真正的设备上试用我的应用程序,我会告诉你这个问题。谢谢你的澄清。