我在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]}"。
有什么问题?
答案 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();
}