如何使用PHP在MySQL中保存二进制数据?

最后发布: 2012-05-31 14:00:34


问题

我想从一台服务器下载图像,并想将二进制数据保存到mysql blob字段中。 但它不起作用。

  1. 如果我显示$ picture1,则显示不可读的字符。 没有显示byt $ picture2。

  2. 如果我尝试将其保存在表中,则不保存在表中。

我如何将其保存到我的Blob字段中。

$picture1 = GetImageFromUrl($url);
$picture2 = addslashes(fread(fopen($picture, "r"), filesize($picture)));

print_r($picture1)
print_r($picture2)

function GetImageFromUrl($link)
{

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch,CURLOPT_URL,$link); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result=curl_exec($ch); 
curl_close($ch); 
return $result;
}
php
回答

在保存到数据库字段之前,请尝试使用base64对其进行编码:

echo base64_encode($picture1);

要从数据库中读出,需要对其进行解码:

echo base64_decode($picture);

但是请确保发送正确的标头,例如:

header('Content-Type: image/png');

但请先阅读以下内容: 将图像存储在数据库中-是或否? 考虑您是否真的要将其保存在数据库中。

我严格反对,但是这取决于您