检测 URL 是图像 URL 的最佳方法是什么?
5 回答
使用 PHP:
最安全 - 获取实际的图像数据。通过
getimagesize()
实际读取文件内的标头字节来确定图像类型。最快 - 获取资源,解析响应标头并查找
content-type
标头。这种方法不如第一种可靠:服务器可能在撒谎,或者配置错误。更快 - 对 URL 执行 HEAD 请求,然后查找
content-type
标头。可能不适用于动态图像资源。我没有这方面的经验,所以里程可能会有所不同。极度偏执的最安全但很慢 - 使用 PHP 获取实际的图像数据,使用 GD 库将它们复制到新的图像资源中,然后保存结果。如果此过程成功,则可以保证它是有效的、未受污染的图像。资源密集型;浏览器支持但 GD 不支持的一些有效图像格式将落在表中。
我会选择第一个选项。
使用 JavaScript:
- 将图像资源加载到
img
元素中。如果onload
事件触发,并且图像随后具有物理尺寸,则浏览器设法加载图像。
可以看看HTTP标头吗?只是一个想法。
一旦您请求了该 URL 的 HTTP 连接,请尝试检查响应的标头...尝试查找 mime 类型。
- 检查标头
- 检查 url 中的扩展名(.gif/ .png 等)
如果您只有 URL 而不是服务器在您请求 URL 时会给您的响应,那么您唯一能做的就是根据文件扩展名猜测,但不能保证以 .jpg 结尾的文件是图像或以 .php 结尾的文件不是图像。
您可能会很高兴以 .jpg、.gif、.png 等结尾的 url 将成为图像,但不能保证。
对于其他任何事情,除非您重新获取它,否则它基本上是不可能的。