Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制将远程托管的图像下载到浏览器_Javascript_Php_Jquery_Image_Download - Fatal编程技术网

Javascript 强制将远程托管的图像下载到浏览器

Javascript 强制将远程托管的图像下载到浏览器,javascript,php,jquery,image,download,Javascript,Php,Jquery,Image,Download,假设我有一个由Google托管的图像: 我想下载此图像文件,而不是直接在浏览器中打开 我试过: <?php function downloadFile($file, $type) { header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$file"); header("Content-T

假设我有一个由Google托管的图像:

我想下载此图像文件,而不是直接在浏览器中打开

我试过:

<?php
function downloadFile($file, $type)
{
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: $type");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
}
downloadFile("img.jpg", "image/jpg");
?>


这只适用于本地托管的imges,而不适用于远程托管的图像,如上面的Google示例。

上的第一个示例名为“使用readfile()强制下载”,带有
.gif
文件:

$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
注释部分下有以下提示:

如果已启用fopen包装器,则URL可以用作此功能的文件名。有关如何指定文件名的详细信息,请参见fopen()。请参阅受支持的协议和包装器,以获取有关各种包装器具有哪些功能、使用说明以及它们可能提供的任何预定义变量的信息的链接

因此,如果您只需替换
$file=https://www.google.ae/images/srpr/logo11w.png';用于
$file='monkey.gif'上述脚本应强制下载图像


当然,这种方法的最大缺点是,图像首先传输到服务器,然后下载到客户端。但是,由于“您无法控制另一台服务器如何处理请求”,因此您无法直接链接到原始源并期望下载该文件。

您无法控制另一台服务器如何处理请求。“不工作”不是什么问题。将PHP错误报告调到最高级别,并查看您的日志。是的,但是否有可能使用js或其他方法来完成此任务?@quentin它可以工作,但对于主服务器上托管的图像,它不处理其他服务器上托管的图像Convert links href指向PHP中的下载脚本。将原始url作为查询参数传递。如果参数存在,则使用CURL获取文件。可以使用javascript或php转换href,以更方便的为准。