2

我正在尝试创建一个允许大文件下载的网站(下载是指浏览器不会尝试播放视频或显示文本文件。我想强制用户选择保存文件的位置) 在 ASP.NET v4 和 IIS7 中,但是我面临一些问题,坦率地说,这让我很恼火。

现在,我找到了一个网站,它提供了一种通过 http://www.cnblogs.com/bestcomy/archive/2004/08/10/31950.aspx流式传输甚至非常大的文件的方法

但是,此来源的问题是,在下载此文件时,我无法向 http 发送任何其他请求。因此,如果用户尝试一次下载多个文件,它将一直坐在那里,直到第一个请求完成。

有没有办法执行非常大的基于媒体的文件下载,允许用户一次下载多个,并要求用户选择保存位置,而不是右键单击并另存为?

编辑:只是为了扩展这一点,下载位于会话页面(用户登录)之后,因此我可以防止未经授权的用户下载文件(通过匿名的安全性不是安全性:P)。无论如何,我可以打开一个新的浏览器会话,然后登录并下载另一个文件(甚至是同一个文件),但是,任何进一步的请求都会坐在那里并“加载”直到下载完成。

另一个编辑:我正在使用 Razor MVC 框架,如果它改变了任何东西

谢谢!

4

2 回答 2

2

我相信您可以做的是从 IIS 中删除文件处理程序,这将导致文件被下载而不是被打开。虽然我自己没有尝试过,但我认为这应该可行。 http://technet.microsoft.com/en-us/library/cc771240(v=ws.10).aspx

于 2012-09-10T23:48:27.390 回答
1

现在有了更多的上下文,我认为这可以简化很多:

要允许并发下载,您需要确保 Session 是只读的。在 MVC3 中,您可以使用 , 来装饰您的控制器[SessionState(SessionStateBehavior.ReadOnly)],以进行自定义安全检查。现在,我不知道您的实现,但考虑到安全性通常是通过使用Authorize属性或类似来处理的。

现在,要强制提示保存文件而不是默认打开它,请检查 Darin 在以下帖子中的回答:https ://stackoverflow.com/a/5830215/1373170

FileResult如果标准适合您的需要,您可以避免使用自定义代码下载文件。

于 2012-09-11T00:19:43.487 回答