php mysql blob存储图片_在PHP中从MySQL中提取BLOB图像数据

我正在阅读一些关于如何将我的图像上传到数据库中作为二进制文件的教程,而不是将它们放在服务器本身,我得到它的工作原理如下:

$image = chunk_split(base64_encode(file_get_contents($tmpfile)));

mysql_query("INSERT INTO images (`img_location`, `caption`, `user`, `genre`, `when`) VALUES ('$image', '$caption', '$id', '$genre', '$when')");

我的问题是你现在如何从数据库中提取它,我已经阅读了几种方法,尝试了所有方法,无法搞清楚,我没有得到MySQL错误,这就是我如何尝试它:

$get_pics = mysql_query("SELECT * FROM images WHERE user='$id' ");

while($get_pics2 = mysql_fetch_array($get_pics))

{

$sixfour_enc = base64_decode($get_pics2['img_location']);

$new .= "%5C%22%22.%24sixfour_enc.%22%5C%22";

}

这样做……有点,正在发生的是它在IMG标签中打印出原始二进制文件.

如何将其再次编译为可读图像?另外,将数据存储在数据库中是愚蠢的吗?我应该只做我通常做的事情并将它们存储在服务器上吗?

谢谢

-麦克风

解决方法:

如果您愿意,可以将图像存储在数据库中(尽管将它们存储为文件也没有任何问题,选择适合您情况的任何内容),但是将原始二进制数据存储在BLOB中(即不要对其进行编码) BASE64).您可以直接在查询中嵌入从file_get_contents获取的二进制数据,前提是您首先使用正确的转义函数(在您的情况下为mysql_real_escape_string).

至于图像的输出,您可以按照现在的方式进行,但是您必须输出base64编码并使用如下数据URI方案:

echo '';

注意,嵌入图像数据有一些优点和缺点.需要注意的一些重要缺点是base64编码的严重开销(比原始编码大约33%)和潜在的缓存问题.

标签:php,mysql,blob,binary

来源: https://codeday.me/bug/20190726/1539646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值