上传文件,MemoryStream vs FileInfo

时间:2011-12-29 13:35:31

标签: c# asp.net file-upload memorystream fileinfo

我必须在我的asp.net Web应用程序中生成一些文件并将其发送到客户端。 所以我创建了一个使用内存流并将缓冲区发送到http响应的方法。

它运行正常,但我只是读了另一个代码而且那个人正在使用fileInfo。因此,如果我理解正确,FileInfo是写在服务器磁盘上的“真实”文件。

那么最佳选择是什么? (如果有的话)我有什么问题要问我?它是关于文件的大小?

请注意,我不关心存储文件,一旦发送,我就不必在服务器上存放。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

这样,您可以使用相同的类/控件,无论您现在或将来的实现需求如何。

有关MSDN article的更多信息。