Как создать массив байтов из HttpPostedFile
Я использую компонент изображения, который имеет метод FromBinary. Интересно, как преобразовать мой входной поток в массив байтов
HttpPostedFile file = context.Request.Files[0];
byte[] buffer = new byte[file.ContentLength];
file.InputStream.Read(buffer, 0, file.ContentLength);
ImageElement image = ImageElement.FromBinary(byteArray);
6 ответов:
используйте объект BinaryReader для возврата массива байтов из потока, например:
byte[] fileData = null; using (var binaryReader = new BinaryReader(Request.Files[0].InputStream)) { fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength); }
BinaryReader b = new BinaryReader(file.InputStream); byte[] binData = b.ReadBytes(file.InputStream.Length);строка 2 должна быть заменена
byte[] binData = b.ReadBytes(file.ContentLength);
Он не будет работать, если ваш файл InputStream.Положение устанавливается в конце потока. Мои дополнительные строки:
Stream stream = file.InputStream; stream.Position = 0;
в вашем вопросе оба буфера и byteArray кажутся байтами[]. Итак:
ImageElement image = ImageElement.FromBinary(buffer);
для изображений, Если вы используете веб-страницы v2 используйте Класс WebImage
var webImage = new System.Web.Helpers.WebImage(Request.Files[0].InputStream); byte[] imgByteArray = webImage.GetBytes();
Comments