Изображение с адресом PHP

0

Я создаю приложение, которое получает контент из HTML-страниц. Я столкнулся с проблемой:

На странице HTML отображается изображение, но URL-адрес изображения указывает на адрес PHP. Когда я копирую и открываю этот адрес в веб-браузере, браузер не может реализовать свое изображение и отображает строки вместо этого.

Страница, содержащая изображение: http://h.acfun.tv/

URL изображения: http://wiki.acfun.tv/keyheaders/cover.php

Я не знаком со сценарием на стороне сервера, интересно, как они это достигли, и как я могу получить правильный URL-адрес изображения с этого PHP-адреса?

Кстати, приложение, которое я делаю, является iOS-приложением.

  • 0
    Это изображение является ссылкой, которая указывает на файл php, поэтому это не должно быть проблемой.
  • 0
    Обратитесь к заголовку PHP: для некоторых различных примеров, включая другие заголовки, которые вы, возможно, захотите установить помимо Content-Type . По крайней мере, Content-Length тоже.
Теги:
image

4 ответа

0
Лучший ответ

Страница отвечает фактическим изображением, однако их Content-Type неверен, поэтому, когда вы переходите на страницу напрямую, ваш браузер считает, что это какой-то текст. Указание тега img на этом URL-адресе покажет изображение, как ожидалось (которое находится в формате JFIF).

Как их достижение - простой случай следующего:

<?php
    echo file_get_contents('theImage.jfif');
?>

Лучший метод, который бы устранил проблему Content-Type, если вы намереваетесь это сделать, - включить правильный заголовок Content-Type:

<?php
    header('Content-Type: image/jfif');
    echo file_get_contents('theImage.jfif');
?>

Сказав это, я не стал бы рекомендовать это делать, кроме некоторых особых случаев. Это влияет на то, как изображение кэшируется браузером (в их случае он вообще не кэшируется) и вызывает PHP, где достаточно простого статического запроса файла.

  • 0
    Понятно, спасибо за это. Это именно то, что мне нужно знать.
0

URL указывает на изображение JPEG, но сервер отвечает заголовком, например text/html.

Content-type: text/html

istead of

Content-type: image/jpeg

Я предполагаю, что браузер, поскольку URL-адрес внутри img- тега пытается успешно определить тип изображения, проверяя содержимое возвращаемых данных.

Если вы вводите адрес непосредственно в браузере, он не позаботится об определении того, является ли запрошенный контент изображением, но подчиняется типу содержимого запроса "text/html",


Если у вас есть доступ к серверному коду, скрипт PHP должен сообщить браузеру, что возвращаемый контент является изображением. Для этого нужно правильно настроить заголовок ответа с помощью функции header(), которая должна быть отправлена до отправки любого содержимого.

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

Если вам нужно отобразить этот контент в приложении iOS, просто обработайте данные, полученные в виде изображения JPEG.

  • 0
    Это не его PHP-скрипт.
0

Эта ссылка возвращает Content-Type text/html, поэтому данные могут быть изображением, но сервер сообщает любому клиенту (браузеру/вашему приложению), что данные являются HTML. Вам нужно либо изменить сервер, чтобы рассказать правду о типе данных, либо получить необработанные данные из URL-адреса и обработать его по-разному (пытаясь загрузить изображение из него).

  • 0
    Первая ссылка имеет тот же URL, но она способна правильно отображать изображение, почему? Это потому, что они поместили URL внутри тега <img>?
  • 0
    Полагаю, тегу img нет дела до возвращаемых заголовков, он просто пытается создать изображение. Не уверен на 100%, вам нужно проверить спецификации HTML ...
0

Это связано с Content-Type запроса, так что браузер знает, какие данные ему нужно отображать. Сервер, обслуживающий cover.php, тип MIME установлен в text/html поэтому ваше приложение пытается отобразить его как текст, а не правильный формат изображения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню