从Asp中的操作提供文件.净MVC.是使用byte[]还是Stream更好?



当我们想要从一个动作中提供一个文件(非HTML)时,我们可以使用file action Result。构造函数可以接受字节[]或流。哪个更好?为什么?

谢谢!

我会使用流,我会努力将数据流式传输到客户端,而不需要将所有数据加载到web服务器上的byte[]

这是唯一的方法,你可以确保你不加载文件完全在服务器内存中,想象10个人下载100 Mb的文件,最好避免ASP. net。. NET进程增长到1GB内存只是因为,与流你可以做到这一点:)

两种方法都没有好坏之分,选择最适合您情况的方法。

例如,如果文件在磁盘上,您可能会将其加载到流

var stream = File.OpeanRead("C:myfile.ext")

没有必要将其转换为字节数组。

但是,如果内存中有一个文件,它可能已经在字节数组中了。在这种情况下,没有必要将其转换为流。

如果文件在磁盘上,可以使用FilePathResult: http://msdn.microsoft.com/en-us/library/system.web.mvc.filepathresult.aspx

该类使用HttpResponse。TransmitFile,它读取文件而不将其缓冲到内存:http://msdn.microsoft.com/en-us/library/system.web.httpresponse.transmitfile.aspx

相关内容

  • 没有找到相关文章

最新更新