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();
If:
通过一次 Read 调用从流中读取数据是非常危险的。您假设所有数据都将立即可用,但情况并非总是如此。您应该始终循环读取,直到没有更多数据为止。
我应该如何更改上面的代码以使其“不那么危险”?
Jon Skeet 实际上有一篇非常好的博客文章,介绍了人们尝试阅读 Streams 的所有不同方式以及为什么每种方式都被破坏了(它以他认为是理想的解决方案结尾):
C# 读取二进制数据 https://jonskeet.uk/csharp/readbinary.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)