117 votes

Convertir HttpPostedFileBase byte]

Dans mon application MVC, j’utilise code suivant pour télécharger un fichier.

MODÈLE

VUE

Tout fonctionne très bien... Mais je suis en train de convertir le résultat fiel en byte []. Comment est-ce que je peux faire cela

CONTRÔLEUR DE

251voto

Jon Skeet Points 692016

Comme Darin dit, vous pouvez lire le flux d'entrée - mais je préfère éviter en s'appuyant sur toutes les données disponibles en un seul coup. Si vous êtes en utilisant .NET 4 c'est simple:

MemoryStream target = new MemoryStream();
model.File.InputStream.CopyTo(target);
byte[] data = target.ToArray();

Il est assez facile d'écrire l'équivalent de CopyTo .NET 3.5 si vous le souhaitez. La partie importante est que vous lisez à partir d' HttpPostedFileBase.InputStream.

Pour efficace, vous pourriez vérifier si le flux retourné est déjà un MemoryStream:

byte[] data;
using (Stream inputStream = model.File.InputStream)
{
    MemoryStream memoryStream = inputStream as MemoryStream;
    if (memoryStream == null)
    {
        memoryStream = new MemoryStream();
        inputStream.CopyTo(memoryStream);
    }
    data = memoryStream.ToArray();
}

27voto

Darin Dimitrov Points 528142

Vous pouvez la lire dans le flux d’entrée :

Et si vous envisagez d’enregistrer directement le fichier sur le disque, vous pouvez utiliser le `` méthode. Vous pourriez trouver utile le post de blog suivant .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X