c# - 如何安全地读取 ASP.NET 中的流?

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

我应该如何更改上面的代码以使其“不那么危险”?

最佳答案

Jon Skeet 实际上有一篇非常好的博客文章,介绍了人们尝试阅读 Streams 的所有不同方式以及每种方式为何被破坏(它以他认为的理想解决方案结尾):

Reading binary data in C#

关于c# - 如何安全地读取 ASP.NET 中的流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155844/

相关文章:

ASP.net 隐藏属性

c# - 以逗号分隔数以千计 asp.net

sql - 删除临时表时如何避免删除静态表

sql - 如何按日期创建 SQL 多次计数计数查询?

c# - 如何绑定(bind)到通用 Windows 应用程序模板内的空值?

c# - 如何自动验证所有 web.config 转换是否具有相同的元素?

c# - 如何在分页期间将 ASPxTextBoxes 的值存储在 DevExpress GridView DataItemTemplate 中

mysql - 我的sql注入(inject)方法

c# - 如何从命令行调用多个文件到您的应用程序中?

c# - ASP.NET : suggest a best option to allow the user to download the data in the datagrid in the client side in Excel format