我有一个数据库,其中图像保存为blob。现在,我想将这个blob数据转换为图像文件。
所以我已经制作了这段代码,但它没有给出任何结果
$sql_icon = "SELECT $off_table.icon,$off_table.id
FROM $off_table,$cnt_table,$ctg_table
WHERE $off_table.id = $cnt_table.id
AND $off_table.id = $ctg_table.id
AND ".$cond_api."
AND ".$cond_nt."
AND ".$cond_cnt."
AND ".$cond_ctg;
$result_icon = mysql_query($sql_icon);
while($row = mysql_fetch_array($result_icon))
{
$image = $row["icon"];
$id = $row["id"];
$file = fopen("./image/".$id.".jpg","w");
fwrite($file, base64_decode($image));
fclose($file);
}
问题是,我正在获取文件但没有扩展名,如果我将它们重命名为“.jpg”扩展名,则显示“无法预览”
注:
通过此方法将图像保存到数据库中
$sql = "INSERT INTO aw_offers_v2
(
id,name,description,payout_type,
payout,expiration_date,creation_date,preview_url,
tracking_url,categories,countries,countries_short,
api_key,network_id, icon,icon_size)
VALUES
('$id','$name','$description','$payout_type',
'$payout','$expiration_time','$creation_time','$preview_url',
'$tracking_url','$categories','$countries','$countries_short',
'$api','$api_url','".mysql_real_escape_string(file_get_contents($cover_image_src))."','".strlen(file_get_contents($cover_image_src))."')";
如果我写这段代码
echo '<img src="data:image/jpeg;base64,'. base64_encode($image).'" />';
然后我可以正确地看到图像。这意味着图像已成功保存。
但我无法将它们作为文件存储在文件夹中。
答案 0 :(得分:1)
通过查看您的代码,您不会base64_encode
您的形象。
所以你可以这样做:
fwrite($file, $image);
当您显示将数据放入base64_encode
标记的src
属性中的图像时,您只需要<img
。
另请注意,您可以简化此操作:
$file = fopen(...);
fwrite($file, $image);
fclose($file);
只有一行:
file_put_contents("./image/{$id}.jpg", $image);