如何从asp.net中的流中安全地读取?

时间:2010-11-11 15:09:58

标签: c# asp.net sql streaming stream

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中从流读取是非常危险的。您假设所有数据都将立即可用,但情况并非总是如此。你应该总是循环,阅读,直到没有更多的数据。

我应该如何更改上述代码以使其“危险性降低”?

1 个答案:

答案 0 :(得分:4)

Jon Skeet实际上有一篇非常好的博客文章,内容涉及人们尝试阅读Streams的各种不同方式,以及为什么每一个都被打破(最终以他认为是理想的解决方案):

Reading binary data in C#