我正在尝试上传图片,第三行出现以下异常:
var file = Request.Files[0];
var imgBytes = new Byte[file.ContentLength - 1];
file.InputStream.Read(imgBytes, 0, file.ContentLength);
var base64String = Convert.ToBase64String(imgBytes,0,imgBytes.Length);
p.Photo = base64String;
答案 0 :(得分:0)
您的代码说:分配(n-1)个字节,读取n个字节。
var imgBytes = new Byte[file.ContentLength]; // <- Remove - 1
file.InputStream.Read(imgBytes, 0, file.ContentLength);
答案 1 :(得分:0)
似乎在创建数组时犯了一个简单的错误,它可能是基于数组从零开始的事实(即位置从0开始)。
首先,要使其非常清楚,请考虑一个包含三个元素{A, B, C}
的数组。当您将它们存储在数组中时,A
将具有索引0
,B
将具有1
,而C
将位于2
。
换句话说,最后一项将位于位置 length - 1
。但是长度本身仍为3。
将其应用于您的情况,您将发现问题出在这里:
var imgBytes = new Byte[file.ContentLength - 1];
删除-1
,它应该可以工作。
另一方面,如果您需要直接读取数组的最后一个字节,则可以使用file.ContentLength - 1
来访问它。