Как создать массив байтов из 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);
388   6  

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);

прежде чем поток.copyto, вы должны сбросить поток.положение 0; тогда он отлично работает.

для изображений, Если вы используете веб-страницы v2 используйте Класс WebImage

var webImage = new System.Web.Helpers.WebImage(Request.Files[0].InputStream);
byte[] imgByteArray = webImage.GetBytes();

Comments

    Ничего не найдено.