web-dev-qa-db-fra.com

Comment créer un tableau d'octets à partir de HttpPostedFile

J'utilise un composant image qui a une méthode FromBinary. Vous vous demandez comment convertir mon flux d'entrée en tableau d'octets

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

Utilisez un objet BinaryReader pour renvoyer un tableau d'octets du flux tel que:

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

la ligne 2 doit être remplacée par

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

Cela ne fonctionnera pas si votre fichier InputStream.Position est défini à la fin du flux. Mes lignes supplémentaires:

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

dans votre question, tampon et byteArray semblent tous deux être byte []. Alors:

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

Pour les images si vous utilisez Web Pages v2, utilisez WebImage Class

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

avant stream.copyto, vous devez réinitialiser stream.position à 0; alors cela fonctionne bien.

2
xpfans