Я извлекаю файл jpg из базы данных oracle и пытаюсь вывести его с помощью команды echo. Файл jpg хранится в виде большого двоичного объекта в базе данных и отображается правильно, когда я обращаюсь к нему из базы данных. Вот соответствующий код:
$query = 'select * from answer where answer_id = :answer_id';
$stmt = oci_parse($conn, $query);
oci_bind_by_name($stmt, ':answer_id', $answer_id);
oci_execute($stmt);
if ($row = oci_fetch_array($stmt, OCI_BOTH)){
header('Content-type: image/jpeg');
$mylob = $row['ANS_PICTURE']->load();
echo $mylob;
}
Это отправляет объем данных, который соответствует размеру файла, но браузер полностью не может интерпретировать его как изображение.
Странно, когда я использую
$fp = fopen('test.jpg', 'w');
fwrite($fp, $mylob);
Я могу сохранить файл, и у него нет проблем с отображением изображения, даже используя браузер, чтобы открыть изображение через сервер.
Если я добавлю заголовок расположения файла и предложу пользователю сохранить изображение, оно все равно не будет отображаться, когда я его открою.
Похоже, что существует проблема между печатью данных и браузером, получающим данные, хотя я понятия не имею, в чем может быть проблема.
У кого-нибудь есть идея?