【发布时间】:2014-07-19 03:17:16
【问题描述】:
我有一个网站,提示用户从外部资源下载文件。由于外部文件名是散列的,并且用户下载了多个文件,用户很难知道他们下载的哪个文件到达了他们请求的资源。比如fdae442dafe42.zip的文件名可以是production-resources.zip。
我正在寻找获得它的方法,以便浏览器以不同的名称下载文件。以下是我的一些想法以及为什么它们不起作用,但您也许可以找到解决方法。
请注意,我无法控制外部资源。我将无法更改标题或其他任何内容。我的服务是一个主要针对桌面用户的网站。 Android 和 iOS 解决方案不会那么有益。
下载属性
这种方法在 Google Chrome 和 Firefox 中运行了一段时间,但后来他们开始关注W3 HTML5 spec。外部资源需要发送Content-Disposition的标头,其中谷歌浏览器和火狐浏览器之前没有检查。
PHP 代理下载
我知道我可以让 PHP 脚本向外部资源发出请求,然后将其交付给最终用户,同时更改标题和名称以满足我的需要。问题是该站点的流量很高,每个用户下载大约 1-2GB 的数据。我的服务器无法处理这种类型的流量,升级服务器的成本可能太高。
使用外部应用程序重命名文件
我正在考虑使用一个外部应用程序(可能是 Chrome / Firefox 扩展程序),它会在文件完成下载后重命名文件。但考虑到我的足够多的受众是一次性访问者,要求他们下载应用程序或扩展程序的可能性很小。
Flash 或 Java 嵌入式解决方案
我正在考虑使用 Java 或 Flash 嵌入式文件来处理文件下载,但我对这两个平台都不太了解。据我所知,Flash 对用户的文件系统没有太多控制,所以这可能是个问题。 Java 将能够完成这项任务,但我真的希望我不必使用 Java,因为它通常不安全并且需要大量下载才能安装它(与外部软件想法相同的问题)。
如果您对我可以做些什么来解决这个问题有任何想法,我们将不胜感激。我不是在寻找任何代码,只是关于如何完成上述任务的想法。我要感谢大家的时间和专业知识。
【问题讨论】:
-
我会投票结束这个问题,因为它主要是基于意见的;这个问题的答案并不能解决问题,它们只会给你和将来发现这个问题的人提供更多思考的东西。不幸的是,它有一个开放的赏金,因此不能投票结束。
-
我不是在问解决方案 1 是否比解决方案 2 更好。我目前想到的所有可用解决方案都行不通。我正在寻找我遇到的问题的解决方案,而不是对我应该使用什么解决方案的意见,因为目前没有。
-
用户是否“随机”下载文件(由他们自己选择,我要文件
foo和bar,我现在不关心其他的了 ),或者他们是否必须下载文件/资源A、B和C才能完成某种之后可以使用的“包”? (所以基本上处理一个文件列表并将它们全部删除) -
他们正在选择要下载的文件,但通常是一系列文件。它们是分割成片段的视频。有些用户只想要文件 4,5,6,而其他用户可能想要 1,2,3,4,5,6,...
-
如果你想保留它可以发送到的信息,我会说你使用桌面语言 E.G c# 并构建一个下载管理器应用程序会更好(不加载服务器进行下载)您的服务器,唯一的缺点是用户必须使用您的应用程序访问系统才能获取数据。
标签: javascript php html