1

我已将位图从 java 方法编码为 Base64 字符串。然后我将此字符串作为 JSON 发送到一个 php web 服务,该服务会将其插入到 longBlob 中。

iVBORw0KGgoAAAANSUhEUgAAAtAAAAQOCAYAAADysw/5AAAABHNCSVQICAgIfAhkiAAAIABJREFU\neJzs3c1WG1maLuBwr76A8A004szPkuxxrxJ4Xghzxg6cfcbgco0L48weW.....

但由于某种原因,当我这样做时

$cust_sign = base64_decode($encodedString);

`$cust_sign` is `null`. 

这是我用来编码的:

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        b.compress(Bitmap.CompressFormat.PNG,50,baos);
        byte[] bytes=baos.toByteArray();
        String base64Image = Base64.encodeToString(bytes,Base64.DEFAULT);

我在 php 脚本中也有这个:

if (base64_decode($cust_sign, true)) 
   { 
       echo "valid"; 
   } 

它确实回显有效

你知道为什么吗?

谢谢

4

3 回答 3

2

由于某种原因,您的字符串包含换行符( \n )。删除它们,它应该可以工作。

编辑:尝试将 Base64.encodeToString() 中的第二个参数从 Base64.DEFAULT 更改为 Base64.NO_WRAP。

于 2013-02-28T19:15:34.770 回答
1

尝试添加 strict 参数以检查字符串是否包含 base64 字母表之外的字符。如果函数返回 FALSE,则可能表明您的 base64 字符串格式错误

于 2013-02-28T19:31:12.853 回答
0

“\”不包含在 Base64 中。您的代码“\n”中似乎有换行符。失败的不是您的解码,而是您对内容进行编码的方式。使用您正在使用的过程更新您的问题,我将更多地编辑我的答案以更具体。

于 2013-02-28T19:17:02.680 回答