【问题标题】:force to download remote image immediately without HTML5强制在没有 HTML5 的情况下立即下载远程图像
【发布时间】:2025-12-10 18:25:02
【问题描述】:

我试图强制下载一个远程图像(使用 https 协议的 URL),但我未能在客户端上尝试下载(由于 IE8,无法使用 HTML5),所以我正在尝试使用服务器端 (php)。 我发现感谢following answer 的唯一方法是使用 curl。其他方式,如 readfile($file_url),总是返回一个空文件。使用 curl 的问题 - 下载在图像下载到服务器后开始,可能需要一些时间。可以直接从源码开始加载吗?

但是,如果有人知道如何在客户端下载图像,并且已经在页面上,那就太好了!

【问题讨论】:

  • 问题不清楚...您的意思是上传到服务器而不是下载吗?
  • “强制”是什么意思?
  • 不,主要思想是允许用户从页面下载图像(如“将图像另存为...”),但图像位于其他服务器上。
  • 这些远程图像的托管者对您尝试做的事情没有意见——您已经得到他们的明确同意?
  • 是的,没关系,它是我们的其他服务器,只是一些内容应该显示在其他站点上。

标签: javascript php remoteobject


【解决方案1】:

你可以使用fopen('http://server/img.jpg')fread()

$handle = fopen("http://www.example.com/image.jpg", "rb");
while (!feof($handle)) {
  echo fread($handle, 8192);
}
fclose($handle);

加上标题。

【讨论】:

  • fopen后$handle为空,可能是php.ini有些问题,但是"allow_url_fopen"设置为"On"状态
  • 远程图片 url 具有 https 协议的另一件事
  • 默认是不验证peer,所以证书应该没有问题。
  • 但这是一个问题,php_openssl 被禁用,当 php_openssl 设置为启用时,您的解决方案与 readfile($file_url) 一样有效。谢谢!
最近更新 更多