【问题标题】:Upload a file, MemoryStream vs FileInfo上传文件,MemoryStream vs FileInfo
【发布时间】:2011-12-29 13:35:31
【问题描述】:

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

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

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

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

【问题讨论】:

  • FileInfo aids in the creation of FileStream objects 所以.. MemoryStream vs FileStream

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    有关 MSDN 的更多信息article

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2015-06-22
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多