javascript - 下载外部资源 - 重命名文件

标签 javascript php html

我有一个网站,提示用户从外部资源下载文件。由于外部文件名经过哈希处理并且用户下载了多个文件,因此用户很难知道他们下载的哪个文件到达了他们请求的资源。例如,fdae442dafe42.zip 的文件名可以是 production-resources.zip

我正在寻找获得它的方法,以便浏览器将文件下载为不同的名称。以下是我的一些想法以及它们为何不起作用,但您或许可以找到解决方法。

请注意,我对外部资源没有任何控制权。我将无法更改标题或其他任何内容。我的服务是一个主要针对桌面用户的网站。 Android 和 iOS 解决方案不会那么有益。

下载属性

这个方法在 Google Chrome 和 Firefox 中工作了一段时间,但后来他们开始关注 W3 HTML5 spec .外部资源需要发送 Content-Disposition 头,Google Chrome 和 Firefox 之前没有检查。

PHP 代理下载

我知道我可以让 PHP 脚本向外部资源发出请求,然后将其交付给最终用户,同时更改 header 和名称以满足我的需要。问题是网站流量很高,每个用户下载大约 1-2GB 的数据。我的服务器无法处理这种类型的流量,升级服务器的成本可能太高。

使用外部应用重命名文件

我正在考虑使用外部应用程序(可能是 Chrome/Firefox 扩展程序),它会在文件下载完成后重命名文件。但考虑到我的观众中有足够多的人是一次性访问者,要求他们下载应用程序或扩展程序的可能性很小。

Flash 或 Java 嵌入式解决方案

我正在考虑使用 Java 或 Flash 嵌入式文件来处理文件下载,但我对这两个平台都不太了解。据我所知,Flash 对用户的文件系统没有太多控制权,因此这可能是个问题。 Java 将能够完成这项任务,但我真的希望我不必使用 Java,因为它通常不安全并且需要大量下载才能安装它(与外部软件想法相同的问题)。


如果您对我可以做些什么来解决这个问题有任何想法,他们将不胜感激。我不是在寻找任何代码,只是关于如何完成上述任务的想法。我要感谢大家的时间和专业知识。

最佳答案

您指的是什么外部资源?

如果恰好是Amazon的S3,它允许你生成下载URL并指定Content-Disposition下载时应该出现在服务器的响应中。在那里你可以编码浏览器在保存文件时应该使用的文件名。

如果是其他服务,看看它的文档,也许它有类似的功能。

关于javascript - 下载外部资源 - 重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836384/

相关文章:

javascript - 如何更改 Javascript 对象的类型?

javascript - Jquery:form.submit() 有效但 form.submit(handler) 无效

javascript - 使用 javascript 或 Symfony 重新加载页面?

html - 超链接到 MS Word 文档中的特定页面

javascript - 如何设置特定类紧随另一个跨度之后的跨度的样式

javascript - 如何缩放JQuery中变量的数量?

php - GET 变量和 IF 语句

php - Preg_replace的效率

javascript - 触发 DIV 容器 onclick 而不是在内容中

html - 用于标题标签下的 anchor 链接的 SEO