有没有办法强制“另存为”对话框?
目前,如果您点击该链接,您将在浏览器中看到该内容,但我需要显示“另存为”对话框。该文件位于外部服务器上。
我已经尝试过:
$("#download_link").click(function() {
document.execCommand('SaveAs','1','location');
});
不幸的是,这不起作用。
修改
当然,如果用户在浏览器中激活了此选项,则可以下载该文件。我只是不希望他被重定向到该网站。
如果有一种方法可以用PHP执行此操作也没关系,但看起来我需要使用readfile(),由于流量我不想要它。
我需要一个适用于外部服务器上文件的解决方案!
评论,指出一些事情:
很抱歉我需要问你,但你认真吗?我问过 我如何强制保存为对话框,你想出“非法”, “混淆”等?我多次提到它是唯一的原因 为什么我要这样做是为了避免所需的文件被播放 直接在浏览器中。这不是非法的,不是任何东西 我想隐藏什么。我也不知道为什么这个问题会被标记出来 作为主题。
答案 0 :(得分:1)
使用HTML5,您只需使用下载属性。
例如:<a href="myfile.pdf" download="myfile.pdf">Download Your Expense Report</a>
答案 1 :(得分:1)
如果文件在浏览器中显示为文本或作为文件下载,则取决于随文件一起发送的标头。 例如,这是excelfile的标题:
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"myfilename.xlsx\"");
header("Cache-Control: max-age=0");
(Excelfile是用php生成的,没有这个标题我会在浏览器中看到文件中的漏洞文件)
重要的是Content-Type。
正如你在你的问题中所说,你不想使用PHP文件的readfile(),你也可以用htaccess设置标题。
<FilesMatch "\.(?i:txt)$">
ForceType application/octet-stream
</FilesMatch>
application / octet-stream =二进制文件(所以它总是下载)。 您必须重写FilesMatch以匹配您的文件