asp.net-mvc – 上传文件:MemoryStream与文件系统
发布时间:2020-12-16 07:19:10  所属栏目:asp.Net  来源:网络整理 
            导读:在我正在创建的业务应用程序中,我们允许管理员上传包含某些数据的CSV文件,这些数据会被解析并输入到我们的数据库中(正在进行所有适当的错误处理等). 作为升级到.NET 4.5的一部分,我不得不更新此代码的一些方面,并且,当我这样做时,我遇到了使用MemoryStream来
                
                
                
            | 
 在我正在创建的业务应用程序中,我们允许管理员上传包含某些数据的CSV文件,这些数据会被解析并输入到我们的数据库中(正在进行所有适当的错误处理等). 
  
  作为升级到.NET 4.5的一部分,我不得不更新此代码的一些方面,并且,当我这样做时,我遇到了使用MemoryStream来处理上传文件的this answer人,而不是暂时保存到文件系统.我没有真正的理由要改变(也许它甚至可能不好),但我想尝试一下学习.所以,我快速换掉了这段代码(由于上传其他元数据,从强类型模型中): HttpPostedFileBase file = model.File;
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"),fileName);
file.SaveAs(path);
CsvParser csvParser = new CsvParser();
Product product = csvParser.Parse(path);
this.repository.Insert(product);
this.repository.Save();
return View("Details",product);对此: using (MemoryStream memoryStream = new MemoryStream())
{
    model.File.InputStream.CopyTo(memoryStream);
    CsvParser csvParser = new CsvParser();
    Product product = csvParser.Parse(memoryStream);
    this.repository.Insert(product);
    this.repository.Save();
    return View("Details",product);
}不幸的是,事情就会中断 – 我的所有数据都是以空值出现的,而且看起来好像MemoryStream中没有任何内容(尽管我对此并不乐观).我知道这可能是一个很长的镜头,但有什么明显的我在这里缺少或我可以做些什么来更好地调试这个? 解决方法
 您需要添加以下内容: 
  
  
  model.File.InputStream.CopyTo(memoryStream); memoryStream.Position = 0; ... Product product = csvParser.Parse(memoryStream); 将文件复制到MemoryStream时,指针将移动到流的末尾,因此当您尝试读取它时,您将获得一个空字节而不是流数据.您只需要将位置重置为开头,即0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
相关内容
- asp.net-mvc-3 – 使用asp.net MVC在Orchard CMS中检索图像
- asp.net-mvc-3 – Mini Profiler不渲染脚本
- [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题
- 存储过程 – ASP Classic – Recordset对象与命令对象
- asp.net – 文件上传控件HasFile始终为false,name始终为Emp
- asp.net-mvc – CssRewriteUrlTransform没有被调用
- asp.net – 在Html.BeginForm之外提交按钮
- ASP.NET页面事件 – 在GridView绑定之后发生按钮单击事件
- 通过WCF扩展实现消息压缩
- asp.net-mvc – 如何使用html帮助器在asp.net mvc中创建一个
推荐文章
            站长推荐
            - asp.net-mvc – POST后重定向不会更改URL
- asp.net-mvc – 将父ID添加到隐藏字段
- ASP.net MVC验证突出显示和不正确的字段Jquery上
- asp.net-mvc – 发布到生产服务器时的.NET MVC错
- asp.net-mvc – Visual Studio 2013无法打开Razo
- asp.net – 如何实现zopfli以获得更好的gzip压缩
- asp.net – 当Visual Studio 2013打开Web项目时,
- asp.net-mvc – 如何在ASP.NET MVC中更改Url.Enc
- 在文件ASP.NET C#中写入并且之后不锁定它们
- asp.net – 使用Html.EditorFor生成具有特定行数
热点阅读
            