2011-12-29 36 views
-1

我必須在我的asp.net web應用程序中生成一些文件並將其發送給客戶端。 所以我做了一個方法,使用內存流並將緩衝區發送給http響應。上傳文件,MemoryStream vs FileInfo

它工作正常,但我只是讀了另一個代碼,這傢伙正在使用fileInfo。所以,如果我理解正確FileInfo是寫在服務器磁盤上的「真實」文件。

那麼最好的選擇是什麼? (如果有的話)我必須問我什麼問題?是關於文件的大小嗎?

請注意,我不關心存儲文件,一旦發送,我不必在服務器上。

+0

FileInfo'幫助創建FileStream對象'所以.. MemoryStream vs FileStream – Reniuz 2011-12-29 13:47:57

回答

2

FileInfo只是指向已存儲在文件系統上的文件的指針。如果你想訪問它的內容,你需要使用流。因此,如果您不想將文件保存在服務器上,則可以使用MemoryStream並將其寫入響應。流也是指向某些數據的指針。 MemoryStream是一個指向存儲在內存中的數據的指針。所以你需要先將這些數據加載到內存中。

一個更好的方法是直接寫入塊的Response對象。這樣你就不需要在內存中加載整個文件內容。但這取決於你如何生成文件。

1

爲什麼不使用FileUpload類?如果你所需要的只是文件流,那麼你可以使用FileUpload.FileContent屬性。但是在未來,如果你真的關心它,並且想保存它,那簡直就是FileUpload.SaveAs({path on server})

這樣您就可以使用相同的類/控件,而不管您現在或將來的實施需求如何。

有關MSDN的更多信息article