存储在MySQL后存在错误的base64

时间:2018-02-25 09:21:59

标签: php mysql swift base64

我正在为Max OS X开发一个简单的应用程序,用于使用Swift语言制作屏幕截图。制作完屏幕截图后,我使用以下命令将其转换为base64字符串:

screenshot.base64EncodedString()

我的服务器上有一个简单的.php文件,用于将此base64字符串保存到MySQL数据库中。一切正常,但是当我试图从我的Android设备上的服务器接收此图像字符串时,它会在解码base64“bad base64”时抛出异常。

这就是我用来解码图像的方法:

byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

我用它来从MySQL数据库中输入/获取图像:

投放:INSERT INTO db (screen) VALUES ('$screen') 获取:SELECT * FROM db

我将base64存储为数据库中的 LONGTEXT

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

真正的解决方案是在提交到MySQL之前将base64编码字符串中的“+”替换为“-”,并在从MySQL中检索到原始字符串后将“-”替换为“+”。这是因为 MySQL 用空格替换了“+”。它会解决问题。

答案 1 :(得分:0)

我找到了解决方案!替换" +"用" - "在base64编码的字符串解决了我的问题。问题是MySQL取代了+空格。