Salut,
J'ai une appli WinForms qui gère une base de données de DVD. L'image de la jaquette de chaque DVD est stockée directement en base sous forme de BLOB. Jusque là pas de problème...
Maintenant, j'ai aussi une page ASP.NET très simple qui permet de parcourir la liste des films dans cette base. Je ne connais pratiquement pas ASP.NET, j'ai fait l'essentiel de la page avec le designer en ne tapant quasiment aucun code à part la requête SQL. J'aimerais ajouter une colonne qui affiche l'image, mais la classe ImageField permet seulement de spécifier une URL, et non l'image elle-même...
L'objet renvoyé par le provider ADO.NET est de type byte[]. Dans mon appli WinForms, je recrée l'image de cette façon:
Seulement en ASP.NET je ne gère pas moi-même les données renvoyées par la base, c'est fait automatiquement par le GridView, et donc je ne peux pas faire la même chose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 byte[] imgBytes = (byte[])(dataReader["cover"]); Cover = Image.FromStream(new MemoryStream(imgBytes));
En dernier recours, je stockerai les images sous formes de fichiers externes à la base, mais je préfèrerais éviter ça, c'est plus pratique d'avoir un seul fichier.
J'ai une petite piste: en créant une classe dérivée de DataControlField, je pourrais peut-être enregistrer les données binaires de l'image dans un fichier, et donner l'URL de ce fichier... mais c'est pas une solution très élégante, surtout que ça va regénérer l'image à chaque fois.
Si vous avez une meilleure idée, je suis preneur... merci d'avance !
Partager