这是我想要完成的:
- 我有一个文件存储在 Windows Azure Blob 存储中(或者任何不在我的 Web 服务器上但可通过 URL 访问的文件)。
- 我想强制下载文件而不首先在我的网络服务器上实际下载文件,即浏览器应该自动从这个外部 URL 获取文件并提示用户下载它。
探索的可能解决方案:
这是我到目前为止探索的内容(以及为什么它们不起作用):
- 使用类似于
FileContentResult
此处所述的内容在 ASP.NET MVC 中返回文件以查看/下载来下载文件。这个解决方案需要我在我的服务器上获取内容,然后从我的服务器流式传输到浏览器。因此,此解决方案将不起作用。 - 使用 HTML 5
download
属性:HTML 5download
属性本来可以很好地工作,但问题是,虽然它确实是一个非常简洁的解决方案,但并非所有浏览器都支持它。 - 更改文件的内容类型:我可以做的另一件事(至少对于我拥有的文件)将文件的内容类型属性更改为浏览器无法理解的内容,因此将被迫下载文件。这可能在某些浏览器中有效,但并非完全如此,因为 IE 足够聪明,可以超越内容类型并查看文件的内容来确定内容类型。此外,如果我不拥有这些文件,那么我将无权更改文件的内容类型。
简而言之,在我的控制器操作中,我应该能够指定文件的 URL,并且浏览器应该以某种方式强制下载文件。
这是可以完成的事情吗?如果是,那么我有什么想法可以做到这一点吗?