How to create byte array from HttpPostedFile
我使用的是一个图像组件,它有一个frombinary方法。想知道如何将输入流转换为字节数组
1 2 3 4 5 | HttpPostedFile file = context.Request.Files[0]; byte[] buffer = new byte[file.ContentLength]; file.InputStream.Read(buffer, 0, file.ContentLength); ImageElement image = ImageElement.FromBinary(byteArray); |
使用BinaryReader对象从流返回字节数组,如下所示:
1 2 3 4 5 | byte[] fileData = null; using (var binaryReader = new BinaryReader(Request.Files[0].InputStream)) { fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength); } |
1 2 | BinaryReader b = new BinaryReader(file.InputStream); byte[] binData = b.ReadBytes(file.InputStream.Length); |
第2行应替换为
1 | byte[] binData = b.ReadBytes(file.ContentLength); |
。
如果您的文件inputstream.position设置为流的结尾,它将不起作用。我的附加行:
1 2 | Stream stream = file.InputStream; stream.Position = 0; |
在您的问题中,buffer和bytearray都是byte[]。所以:
1 | ImageElement image = ImageElement.FromBinary(buffer); |
号
对于图片,如果使用网页v2,请使用WebImage类
1 2 | var webImage = new System.Web.Helpers.WebImage(Request.Files[0].InputStream); byte[] imgByteArray = webImage.GetBytes(); |
。
在stream.copyto之前,必须将stream.position重置为0;然后它工作得很好。