关于c#:如何从HttpPostedFile创建字节数组

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;然后它工作得很好。