сохранение файла в базе данных с помощью распаковки php - PullRequest
0 голосов
/ 07 февраля 2019
$data = '0x'.unpack('H*hex', file_get_contents($tmp_name))['hex'];

Я пытаюсь сохранить данные файла в моей базе данных, используя приведенный выше код.Затем я извлекаю его и использую для загрузки как

header('Content-Description: File Transfer');
header("Content-Transfer-Encoding: Binary");
header('Content-Disposition: attachment; filename="'.basename( $response->strFileName ).'"');
header('Cache-Control: must-revalidate');
header('Content-Length: '.$response->intSize);
echo $response->binFile;

, где $response->binFile - это ответ от сервера на столбец, в котором я сохранил данные из приведенного выше кода.

Это работает для файла PDFно для изображения jpg / png это не так.Размер изображения меньше исходного файла, и я получаю сообщение об ошибке

enter image description here

Для изображения, загруженного при его загрузке и открытии.для PDF нет проблем

Исходное изображение справа, левое изображение - загруженное изображение в базу данных, затем загруженное.Используя приведенный выше код

enter image description here

Я не знаю, стоит ли упоминать, но загружаемое изображение не имеет размера, показанного ниже:

enter image description here

Оригинал загружен справа, затем загружен слева

1 Ответ

0 голосов
/ 12 февраля 2019

Я использовал приведенный ниже заголовок.и исправил проблему

ob_clean();
header("Content-type: ".$response->strExtension.""); 
header("Cache-Control: no-store, no-cache");  
header("Content-length: ".$response->intSize.""); 
header("Content-Disposition: attachment; filename=".basename($response->strFileName).""); 
echo base64_decode($response->binFile);
...