上传一个文件,MemoryStream vs FileInfo

本文关键字:文件 MemoryStream vs FileInfo 一个 | 更新日期: 2023-09-27 18:18:57

我必须在我的asp.net web应用程序中生成一些文件并将其发送给客户端。所以我做了一个方法谁的工作与内存流和发送缓冲区的http响应。

它工作得很好,但我只是读了另一个代码和家伙正在使用fileInfo。因此,如果我理解正确的话,FileInfo是写入服务器磁盘上的"真实"文件。

那么什么是最好的选择呢?(如果有的话)我要问自己什么问题?是关于文件的大小吗?

请注意,我不关心文件的存储,一旦他被发送,我不需要把它放在服务器上。

上传一个文件,MemoryStream vs FileInfo

FileInfo只是一个指针,指向一个已经存储在文件系统中的文件。如果你想访问它的内容,你需要使用流。因此,在您的情况下,如果您不想将文件保存在服务器上,您可以使用MemoryStream并将其写入响应。流也是指向某些数据的指针。MemoryStream是指向存储在内存中的数据的指针。因此,您需要首先将这些数据加载到内存中。

一个更好的方法是直接写入块Response对象。这样就不需要将整个文件内容加载到内存中。但这取决于您如何生成文件。

为什么不使用FileUpload类?如果您需要的只是文件流,那么您可以使用FileUpload.FileContent属性。但在未来,如果你真的关心它,并想保存它,它只是FileUpload.SaveAs({path on server})

这样你就可以使用相同的类/控件,而不管你现在或将来的实现需要。

有关MSDN文章的更多信息