web-dev-qa-db-ja.com

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

BinaryReaderオブジェクトを使用して、ストリームから次のようなバイト配列を返します。

byte[] fileData = null;
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
    fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}
276
Wolfwyrd
BinaryReader b = new BinaryReader(file.InputStream);
byte[] binData = b.ReadBytes(file.InputStream.Length);

2行目は、

byte[] binData = b.ReadBytes(file.ContentLength);
22
jeff

ファイルInputStream.Positionがストリームの最後に設定されている場合、機能しません。私の追加行:

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

あなたの質問では、bufferとbyteArrayの両方がbyte []のようです。そう:

ImageElement image = ImageElement.FromBinary(buffer);
3
devio

画像にWebページv2を使用している場合は、 WebImage Class を使用します

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

stream.copytoの前に、stream.positionを0にリセットする必要があります。その後、正常に動作します。

2
xpfans