簡體   English   中英

如何安全地從 asp.net 中的流中讀取?

[英]How do I safely read from a stream in asp.net?

byte[] bytes = new byte[uploader.UploadedFiles[0].InputStream.Length];
uploader.UploadedFiles[0].InputStream.Read(bytes, 0, bytes.Length);

var storedFile = new document();
string strFullPath = uploader.UploadedFiles[0].FileName;
string strFileName = Path.GetFileName(strFullPath);

storedFile.document_id = Guid.NewGuid();
storedFile.content_type = uploader.UploadedFiles[0].ContentType;
storedFile.original_name = strFileName;
storedFile.file_data = bytes;
storedFile.date_created = DateTime.Now;
db.documents.InsertOnSubmit(storedFile);
db.SubmitChanges();

如果:

在對 Read 的單個調用中從流中讀取是非常危險的。 您假設所有數據都將立即可用,但情況並非總是如此。 您應該始終循環閱讀,直到沒有更多數據為止。

我應該如何更改上面的代碼以使其“不那么危險”?

Jon Skeet 實際上有一篇非常好的博客文章,介紹了人們嘗試閱讀 Streams 的所有不同方式以及每種方式都被破壞的原因(以他認為的理想解決方案結尾):

在 C# 中讀取二進制數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM