asp.net mvc fileupload HttpPostedFileBase输入流中的ReadTimeout

时间:2017-01-11 10:47:04

标签: asp.net-mvc upload inputstream

我在asp.net mvc中接受上传文件的操作。我获得的HttpPostedFileBase不为null,甚至ContentLength的值大于0,但是当我检查" InputSream"时,它有以下错误:

  

ReadTimeout ='((System.Web.HttpPostedFileWrapper)refile).InputStream.ReadTimeout'抛出类型' System.InvalidOperationException'

的例外

因此,当我想要转换为readitbytes时,除了空数组之外什么都没有:

using (var reader = new System.IO.BinaryReader(refile.InputStream))
                    {
                        var a = reader.ReadBytes(model.File.ContentLength);
                    }

所以" a"得到" {byte [0]}"。

有什么问题?

2 个答案:

答案 0 :(得分:2)

您的表单中可能缺少enctype。如果出现此类问题,请更正您的表格。带文件的MVC表格将是这样的

@using (Html.BeginForm("Add", "Advertisement", FormMethod.Post, new { @class = "form-horizontal", enctype = "multipart/form-data" }))
{
    //Content
}

谢谢希望这有帮助!

答案 1 :(得分:0)

Abp正在尝试验证MVC Action参数,当尝试读取files参数值以验证它时,会发生此异常。

你可以忽略

  

HttpPostedFileWrapper

用于验证的

类型,一切都应该完美运行

并使用它从中获取字节数组(更多细节见Convert HttpPostedFileBase to byte[]

using (var ms = new MemoryStream())
  {
     refile.InputStream.CopyTo(ms);
     byte[] a = ms.ToArray();

  }