Как получить BLOB-файл изображения в PHP?

Я использую plupload для загрузки файла на моем php-сайте, при загрузке большого файла файл становится файлом с именем «blob» без суффикса. Я знаю, что это двоичный файл, который содержит необработанные данные, вопрос в том, как извлечь данные и сохранить их обратно в виде файла изображения, скажем .png / .jpg или т. Д.? Я старался:

$imageString = file_get_contents($blogPath);
$image = imagecreatefromstring($imageString);

Но это дает мне некоторую ошибку «Данные не в распознанном формате …», есть мысли? Заранее спасибо.

2

Решение

Ваш звонок в imagecreatefromstring() должно работать просто отлично, если ваш file_get_contents() работает. использование var_dump($imageString) проверять. Вы хотели назвать свою переменную $blobPath вместо $blogPath?

Вам не нужно загружать это изображение, хотя. Просто переименуйте файл.

rename($blobPath, 'new/path/here.jpg');

http://php.net/manual/en/function.rename.php

1

Другие решения

Я сохраняю загруженные файлы изображений для позднего использования, например, прикрепляю их к сообщениям или продуктам (мой сайт — CMS для электронной коммерции). Я подумал, что мой файл изображения не был полностью загружен на сервер, размер изображения перед загрузкой составляет 6 МБ, но размер файла blob составляет всего 192 КБ, поэтому я думаю, что загружаемый файл — это просто кусок, а не весь пакет, и все же это подняло другой вопрос: как я должен взять все части и собрать их как один полный файл изображения? Как упоминалось ранее, я использую plupload для плагина js и php в качестве бэкэнда, php-код бэкэнда для обработки загрузки выглядит следующим образом:

move_uploaded_file($_FILES["file"]["tmp_name"], $uploadFolder . $_FILES["file"]["name"]);
1

Вместо этого вы должны сделать это для отображения изображения в браузере

 <img src="data:image/jpeg;base64,'.base64_encode( $row['blob_image'] ).'"/>

Я не уверен, что делает imagecreatefromsting или как он кодирует изображение.

Я посмотрел на документацию для этой функции; ты пропускаешь:

$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';

$data = base64_decode($data); <--- this operation
-1