4

我一直在尝试将图像存储在 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包含原始编码字符串(在屏幕左侧)和存储在数据库中的字符串(在屏幕右侧)。

任何想法为什么会发生这种情况以及如何防止它?

提前致谢。

4

1 回答 1

2

你没有注意到,你只是剪掉了大约 20% 的绳子?似乎您的数据库字段有限制。类似的东西varchar(255),你尝试存储1500长度字符串。

http://tinyurl.com/c2e7hru - 见这里。我只是复制您的数据库字段值的末尾并在“原始”值中找到它。

另外,检查您的编码。

于 2012-11-20T15:14:41.500 回答