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