сбой типа содержимого в Firefox при использовании динамических изображений (PHP) в <img src="source.php"> - PullRequest
1 голос
/ 05 июля 2010

Хорошо, извините, загадочный субъект.

У меня есть система, которая динамически выбирает данные изображения и вносит некоторые изменения на лету.

По сути, пропуская неважные биты, это мой код:

$File->Filename = "testimage.jpg";
$File->Open();
$FileData = $File->Read();

header('Content-Type: image/jpeg');

echo $FileData;

Единственный вывод на странице - это $ FileData.Хорошо.Когда я запускаю скрипт как есть, Firefox представляет мне пустую страницу, а Chrome и IE дают мне поле «отсутствует изображение».

Как ни странно, когда я удаляю объявление типа содержимого, я вижусырые данные изображения просто отлично.Я проверил это с несколькими изображениями, предоставив все типы JPEG, но он явно отлично загружает различные изображения, так как исходные данные успешно изменяются, и соответствует исходному содержимому самого изображения.

Любой имеетЛюбая идея, почему это было бы не в состоянии просто показать изображение в этот момент?

Ответы [ 3 ]

4 голосов
/ 05 июля 2010

Вам нужно предоставить больше информации, чтобы браузер мог правильно ее обрабатывать (используйте правильный тип и длину):

header('Content-Length: '.strlen($FileData),true); // EDIT: inserted the strlen function as suggested by kgb
header('Content-Type: image/jpeg');
2 голосов
/ 05 июля 2010

Попробуйте установить Content-Length соответствующим образом.Удалите завершающий символ?>, Чтобы убедиться, что в конце скрипта нет пробелов, и убедитесь, что он запускается в самом начале скрипта.

0 голосов
/ 05 июля 2010

Я объединю ответы Фантома и Тариамы;):

header('Content-Length: '.strlen($FileData), true);
header('Content-Type: image/jpeg');
die($FileData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...