У меня есть база данных, где изображения сохраняются в виде 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).'" />';
тогда я могу видеть изображения правильно. Это означает, что изображения успешно сохранены.
Но я не могу хранить их в папке как файлы.
Глядя на свой код, вы не base64_encode
ваше изображение.
Так что вы можете просто сделать:
fwrite($file, $image);
Вам нужно только base64_encode
когда вы отображаете изображение, помещая данные внутри src
атрибут <img
тег.
Также обратите внимание, что вы можете упростить это:
$file = fopen(...);
fwrite($file, $image);
fclose($file);
одной строкой:
file_put_contents("./image/{$id}.jpg", $image);
Других решений пока нет …