php imagejpeg mime type - PullRequest
       7

php imagejpeg mime type

1 голос
/ 13 октября 2009

Я использую php imagejpeg для сохранения ресурса изображения GD в файл, делая это:

imagejpeg($im, '../images/' . $image_id . '.jpg');

Работает нормально, но, согласно моему браузеру, пытается прочитать файл как текст / обычный:

Ресурс интерпретируется как изображение, но передается с текстом MIME типа / обычный.

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

Я использую windows (XAMPP), это может быть проблемой Windows? РЕДАКТИРОВАТЬ: Нет. Я только что проверил на сервере Linux.

Что касается фактического отображения, это просто HTML. Мой код загрузки должен сохранять файл как обычный jpeg на сервере. Он просто не сохраняет его с правильным типом пантомимы.

Спасибо

Ответы [ 3 ]

1 голос
/ 13 октября 2009

AFAIK, сервер Apache - в стандартной конфигурации из коробки - должен отправлять заголовки типа контента исключительно на основе расширения файла. Apache даже не должен смотреть на содержимое или на то, как оно было изначально сгенерировано / сохранено.

На моем стандартном Apache2 файл conf / mime.types содержит строку:

image/jpeg jpeg jpg jpe

что должно сделать это, верно?

Можете ли вы опубликовать тестовый пример, скажем, простой HTML-страницы с двумя тегами img: один для вашего сгенерированного изображения, а другой для стандартного изображения, которое, кажется, работает нормально?

Последняя мысль: встречается ли это во всех браузерах? Может это проблема браузера, а не сервера?

0 голосов
/ 13 октября 2009

Вы уверены, что не используете неправильное имя расширения файла? В противном случае просто поместите обычное изображение на сервер и убедитесь, что mime-типы правильно настроены. Возможно также, что ваши данные изображения от манипуляций повреждены.

0 голосов
/ 13 октября 2009

Звучит так, будто вы выгружаете содержимое файла в браузер и фактически не сообщаете браузеру, какой это тип файла. Попробуйте добавить заголовок Content-type перед выводом изображения в браузер:

header('Content-type: image/jpeg');
...