我必须在我的asp.net Web应用程序中生成一些文件并将其发送到客户端。 所以我创建了一个使用内存流并将缓冲区发送到http响应的方法。
它运行正常,但我只是读了另一个代码而且那个人正在使用fileInfo。因此,如果我理解正确,FileInfo是写在服务器磁盘上的“真实”文件。
那么最佳选择是什么? (如果有的话)我有什么问题要问我?它是关于文件的大小?
请注意,我不关心存储文件,一旦发送,我就不必在服务器上存放。
答案 0 :(得分:2)
FileInfo
只是指向已存储在文件系统中的文件的指针。如果要访问其内容,则需要使用流。因此,在您的情况下,如果您不想将文件保存在服务器上,则可以使用MemoryStream
并将其写入响应。 Stream也是指向某些数据的指针。 MemoryStream是指向存储在内存中的数据的指针。因此,您需要先将这些数据加载到内存中。
更好的方法是直接以块的形式写入Response
对象。这样您就不需要将整个文件内容加载到内存中。但这取决于您如何生成文件。
答案 1 :(得分:1)
为什么不使用FileUpload
课程?如果您只需要该文件的流,则可以使用FileUpload.FileContent
属性。但是在将来,如果你确实关心它,并想要保存它,它只是FileUpload.SaveAs({path on server})
。
这样,您可以使用相同的类/控件,无论您现在或将来的实现需求如何。
有关MSDN article的更多信息。