我一直在尝试将图像存储在mysql数据库中,方法是将它们编码为base64字符串,然后将它们传递给php脚本,然后将该字符串存储在blob(我也尝试过文本)字段中。会发生什么是字符串按原样发送到php脚本,但是当存储在数据库中时,它将被存储为完全不同的字符串。
我是这样做的:
Bitmap image = BitmapFactory.decodeFile("/sdcard/photo2.jpg");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteImage = stream.toByteArray();
String s = Base64.encodeToString(byteImage, Base64.NO_WRAP | Base64.URL_SAFE);
然后将字符串's'传递给php脚本(正如我检查过的那样),然后脚本将其插入数据库中。
此链接http://diffchecker.com/kKD4w16C包含原始编码字符串(位于屏幕左侧)和存储在数据库中的字符串(位于屏幕右侧)。
为什么会发生这种情况以及如何预防?
提前致谢。
答案 0 :(得分:2)
你没注意到,你只是削减了约20%的弦?好像您的数据库字段有限制。像varchar(255)
这样的东西,你尝试存储1500
长度字符串。
http://tinyurl.com/c2e7hru - 请看这里。我只是复制数据库字段值的末尾,并以“原始”值找到它。
另外,请检查您的编码。