-1

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

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

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

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

4

2 回答 2

3

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

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

于 2011-12-29T13:46:01.207 回答
2

为什么不使用FileUpload类?如果您只需要文件流,则可以使用FileUpload.FileContent属性。但是以后,如果你真的关心它,想要拯救它,那就简单了FileUpload.SaveAs({path on server})

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

有关相关 MSDN文章的更多信息。

于 2011-12-29T13:59:14.567 回答