带有 PHP 地址的图像


Image with PHP address

我正在构建一个从HTML页面中获取内容的应用程序。我遇到了一个问题:

HTML 页面中显示了一个图像,但图像 URL 指向 PHP 地址。当我在Web浏览器中复制并打开此地址时,浏览器无法实现其图像并显示字符串。

包含图像的页面:http://h.acfun.tv/

图片网址:http://wiki.acfun.tv/keyheaders/cover.php

我不熟悉服务器端脚本,我想知道他们是如何实现这一点的,以及如何从这个 PHP 地址获得正确的图像 URL?

顺便说一下,我正在制作的应用程序是一个iOS应用程序。

页面使用实际图像进行响应,但是它们的内容类型不正确,因此当您直接转到该页面时,您的浏览器会认为这是一些文本。将 img 标记指向该 URL 将按预期显示图像(采用 JFIF 格式)。

他们如何实现它是一个简单的案例,如下所示:

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

如果您也打算这样做,可以消除内容类型问题的更好方法是包含正确的内容类型标头:

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

话虽如此,除了一些非常特殊的情况外,我不建议这样做。它会影响浏览器缓存图像的方式(在他们的情况下,它根本不缓存),并在简单的静态文件请求就足够的情况下调用 PHP。

该链接返回Content-Type text/html,因此数据可能是图像,但服务器告诉任何客户端(浏览器/您的应用程序)数据是HTML。您要么需要更改服务器以告知数据类型的真相,要么从 URL 获取原始数据并以不同的方式处理它(通过尝试从中加载图像)。

它与请求的Content-Type有关,以便浏览器知道它需要显示什么样的数据。提供.php MIME类型的服务器设置为text/html,因此您的应用尝试将其显示为文本,而不是正确的图像格式。

URL 指向 JPEG 图像,但服务器使用类似于 text/html 的标头进行响应

Content-type: text/html

Content-type: image/jpeg

我猜是浏览器,因为网址位于 img 标签内,因此尝试通过检查返回的数据内容来确定图像类型。

如果您直接在浏览器中输入地址,它不会确定请求的内容是否是图像,而是遵守请求"text/html"的内容类型


如果您有权访问服务器代码,PHP 脚本应告诉浏览器返回的内容是图像。这样做的方法是在发送任何内容之前使用 header() 函数正确设置响应的标头。

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

如果您必须在iOS应用程序中显示该内容,只需将接收到的数据视为JPEG图像即可。