有没有办法'模拟'右键单击save-as命令或强制在浏览器中使用JavaScript下载文件?

Met*_*uru 6 javascript http download right-click save-as

我有这种情况,我们有媒体文件存储在全球CDN上.我们的网络应用程序托管在它自己的服务器上,然后当需要媒体资产时,它们从CDN网址调用.最近我们有一个用户可以下载文件附件的页面,但是有些文件类型是在浏览器中打开而不是下载(例如MP3).解决这个问题的唯一方法是手动指定HTTP响应以附加文件,但我唯一能做到这一点的方法是将文件从CDN下载到我的服务器然后将其反馈给用户,这违背了拥有它的目的在全球CDN上.相反,我想知道是否有一些客户端解决方案吗?

编辑:刚刚发现这个地方,虽然我不确定它是否适用于所有浏览器?

<body>
<script>
function downloadme(x){
myTempWindow = window.open(x,'','left=10000,screenX=10000');
myTempWindow.document.execCommand('SaveAs','null','download.pdf');
myTempWindow.close();
}
</script>

<a href=javascript:downloadme('/test.pdf');>Download this pdf</a>
</body>
Run Code Online (Sandbox Code Playgroud)

重新编辑:哦,这个想法太多了 - > execCommand SaveAs在Firefox中运行吗?

Lou*_*nco 2

您的 CDN 允许您指定 HTTP 标头吗?例如,亚马逊云前端就是这样做的。