[C#] 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);



답변

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.Position 파일이 스트림의 끝으로 설정되어 있으면 작동하지 않습니다. 내 추가 라인 :

Stream stream = file.InputStream;
stream.Position = 0;


답변

귀하의 질문에서 buffer와 byteArray는 모두 byte [] 인 것 같습니다. 그래서:

ImageElement image = ImageElement.FromBinary(buffer);


답변

stream.copyto 전에 stream.position을 0으로 재설정해야합니다. 그럼 잘 작동합니다.


답변

Web Pages v2를 사용하는 경우 이미지의 경우 WebImage 클래스를 사용하십시오.

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


답변