如果你有外部的图像或其他文件,当用户点击它时,如何强制浏览器下载链接?
使用“内容处理:附件;” header会这样做,但它不适用于外部驻留的文件,而无需在本地读取和导入文件。
答案 0 :(得分:5)
您必须先在服务器上加载资源。您可能也想要进行一些缓存:
<?php
header("Content-disposition: attachment; filename=myfile.jpg");
echo file_get_contents("http://host.tld/path/to/myfile.jpg");
?>
答案 1 :(得分:2)
这是不可能的。您不能指示客户端如何处理与当前请求的资源不同的资源。
您只能使用代理来获取外部外部文件并将其传递给客户端。
答案 2 :(得分:0)
如果您不控制HTTP标头,我认为不可能强制下载文件。 Content-disposition: attachment
是我知道实现这一目标的唯一方式。
虽然这可能不起作用,但我唯一的猜测是尝试将Content-disposition
与Location
标题合并:
Content-disposition: attachment; filename=myfile.jpg
Location: http://www.somesite.com/myfile.jpg
(这是一个长镜头,可能无效和/或只是不好的做法)
答案 3 :(得分:0)
我使用上述“Content-Disposition”标题的组合,以及强制类型:
header("Content-type: attachment/octet-stream");
header('Content-disposition: attachment; filename="'.$filename.'"');
答案 4 :(得分:0)
我使用类似于此的方法下载mp4文件,可以用于文本文件:
$file=fopen('http://example.com/example.txt','r');
header("Content-Type:text/plain");
header("Content-Disposition: attachment; filename="example.txt");
fpassthru($file);
答案 5 :(得分:0)
您可以使用下载属性。只需将download ='filename.extension'添加到下载链接:
<a link='mysite.com/sfsf.extension' download='filenameuwant.extension'></a>