Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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
如何使用HTML/JavaScript强制下载?_Html_Http_File_Download_Response - Fatal编程技术网

如何使用HTML/JavaScript强制下载?

如何使用HTML/JavaScript强制下载?,html,http,file,download,response,Html,Http,File,Download,Response,我有一个链接,如果用户单击它,我需要发生两件事: 向用户发送正确的HTTP响应(尤其是使用内容类型:video/mp4) 视频文件将自动开始下载 我在PHP中看到过类似的情况,但它是否只适用于HTML/JavaScript?不,这是不可能的(至少对于仅限于客户端JavaScript的JavaScript值而言) 如果要覆盖浏览器处理HTTP资源的默认行为,则需要使用HTTP头。如果要正确执行,请使用(带有附件值) 您可以使用或(几乎)任何其他服务器端环境来设置此标头。自动将在很大程度上取决于

我有一个链接,如果用户单击它,我需要发生两件事:

  • 向用户发送正确的HTTP响应(尤其是使用
    内容类型:video/mp4
  • 视频文件将自动开始下载
我在PHP中看到过类似的情况,但它是否只适用于HTML/JavaScript?

不,这是不可能的(至少对于仅限于客户端JavaScript的JavaScript值而言)

如果要覆盖浏览器处理HTTP资源的默认行为,则需要使用HTTP头。如果要正确执行,请使用(带有附件值)

您可以使用或(几乎)任何其他服务器端环境来设置此标头。

自动将在很大程度上取决于浏览器及其选项。但是,您可以通过响应中的标题告诉浏览器您希望发生什么(然后它将与用户再次检查)。例如,将其设置为
附件;在大多数浏览器上,filename=blah.mp4
会邀请用户下载(使用该文件名),即使通常浏览器会尝试在自己的界面中显示/播放内容。有关详细信息,请参阅链接。(下载可能是mp4文件的默认设置,但这取决于用户;我发现这在为HTML文件提供下载链接时很有用。)


如果不使用服务器端脚本(正如您所说的那样),可以通过web服务器中的配置设置头。例如,对于Apache,您可以使用与这些视频文件的URL匹配的规则,并使用下载属性

<a href="http..." download></a>

或者使用指定文件名

<a href="http..." download="filename.pdf"></a>


查看更多信息:

(这是——或者至少是——不是重复的答案。[我讨厌重复的答案。]大卫在我发布了我的答案后,编辑了他的答案,将
内容配置纳入其中。
。@David:我应该清楚我没有批评。改进答案是完全可以接受的。只是注意不要让法西斯分子追上我。:-)