Lorsque j’ai téléchargé une image de mon site Web, je dois faire 2 choses:
La première chose que je fais est de lire le stream d’images dans un object Image, comme ceci:
var file = Request.Files["logo"]; Image FullsizeImage = Image.FromStream(file.InputStream);
la prochaine chose que je fais est de sauvegarder l’object “fichier” dans la firebase database (LINQ to SQL). MAIS, lorsque j’essaie d’enregistrer l’image dans la firebase database, le stream du fichier a sa position à la fin du stream et il semble qu’aucune donnée ne soit présente.
Je sais que je devrais un jour réinitialiser le stream et le remettre en position 0, mais comment puis-je le faire de la manière la plus efficace et la plus correcte?
Eh bien, le moyen le plus simple est:
file.InputStream.Position = 0;
… en supposant que le stream supporte la recherche. Cependant, cela peut faire des choses intéressantes pour l’ Image
si vous ne faites pas attention – car elle aura conservé une référence au stream.
Il peut être préférable de charger les données dans un tableau d’octets, puis de créer deux objects MemoryStream
distincts à partir de celui-ci si vous en avez encore besoin. Si vous utilisez .NET 4, il est facile de copier un stream dans un autre:
MemoryStream ms = new MemoryStream(); Request.Files["logo"].InputStream.CopyTo(ms); byte[] data = ms.ToArray();