将MemoryStream转换为byte [] - 无法访问已关闭的Stream

时间:2013-07-17 08:38:07

标签: c# asp.net-mvc stream

我有一个文件上传可以上传文件async

   $("#files").kendoUpload({
        async: {
            saveUrl: "AddFile",              
              autoUpload: true
          }
    });

在AddFile操作中,我将文件存储在tempData

   public ActionResult AddFile(IEnumerable<HttpPostedFileBase> files)
    {
        TempData["PostedFile"] = files;
        // Return an empty string to signify success
        return Content("");
    }

在创建操作时,我希望将发布的文件Inputdtream转换为byte [],我有一个例外

  

无法访问已关闭的文件

  if ((TempData["PostedFile"] as IEnumerable<HttpPostedFileBase>)!= null)
     {

      var postedfile =(TempData["PostedFile"] as IEnumerable<HttpPostedFileBase>).ElementAt(0);

       MemoryStream target = new MemoryStream();
       postedfile.InputStream.CopyTo(target);//This Line Has exception
       byte[] data = target.ToArray();
      }

更新 当我上传一个文件时它的大小是80Kb,我的代码工作...当我的文件sizze是500k mycode有异常!!!!!!!!!

1 个答案:

答案 0 :(得分:0)

这是MVC引擎的正确行为。为什么不在AddFile动作中将字节数组存储在TempData中?