如何强制“另存为”对话框?

有没有办法强制“另存为”对话框?

目前,如果您点击链接,您将在浏览器中看到内容,但我需要出现“另存为”对话框。 该文件位于外部服务器上。

我已经尝试过:

$("#download_link").click(function() { document.execCommand('SaveAs','1','location'); }); 

不幸的是,这不起作用。

编辑:

当然,如果用户在浏览器中激活了此选项,则可以下载该文件。 我只是不希望他被重定向到该网站。

如果有一种方法可以用PHP执行此操作也没关系,但看起来我需要使用readfile(),由于流量我不想要它。

我需要一个适用于外部服务器上的文件的解决方案!

评论,指出一些事情:

对不起,我需要问你,但你认真吗? 我刚刚问我如何强制保存为对话框,你想出“非法”,“混淆”等? 我多次提到它,我想要这样做的唯一原因是避免直接在浏览器中播放所需的文件。 这不是非法的,不是我要隐藏的东西。 我也不知道为什么这个问题被标记为偏离主题。

使用HTML5,您只需使用下载属性即可。

例如: Download Your Expense Report

如果文件在浏览器中显示为文本或作为文件下载,则取决于随文件一起发送的标头。 例如,这是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。

编辑:没有readfile()

正如你在问题中所说,你不想使用PHP的readfile(),你也可以用htaccess设置头文件。

  ForceType application/octet-stream  

application / octet-stream =二进制文件(所以它总是被下载)。 您必须重写FilesMatch才能匹配您的文件