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

J’utilise un composant d’image qui a une méthode FromBinary. Je me demande comment convertir mon stream d’entrée en un 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); 

Utilisez un object BinaryReader pour renvoyer un tableau d’octets du stream comme:

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

la ligne 2 devrait être remplacée par

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

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

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

dans votre question, buffer et byteArray semblent être des octets []. Alors:

 ImageElement image = ImageElement.FromBinary(buffer); 

avant stream.copyto, vous devez réinitialiser stream.position à 0; alors ça marche bien.

Pour les images si vous utilisez Web Pages v2, utilisez la classe WebImage

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