Afficher une image dans une page web depuis une bdd

romano80 Messages postés 1 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 25 janvier 2005 - 25 janv. 2005 à 20:50
mojo9 Messages postés 46 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 16 mars 2006 - 26 janv. 2005 à 11:28
Bonjour,
Je ne sais pas si ce que je veux faire est faisable mais bon ki ne tente rien n'a rien :

Nous devons réaliser une galerie photo sur Internet genre photosig.com
Tout d'abord, je récupère une image depuis un base de données PostGresql (type de données bytea c comme blob sous oracle) via un ResultSet.
Je met ce résultat dans un flux :


InputStream istreamImage = resultat.getBinaryStream("photo");

Maintenant je voudrais afficher ce flux dans une page HTML mais attention : le flux et non pas le flux transformé en fichier (ca c fait et ca marche).ex :


BufferedImage image = ImageIO.read(istreamImage);
FileOutputStream stream = new FileOutputStream(file);
ImageIO.write(image,"jpg",stream);

Là effectivement ca marche mais le problème avec cette soluce est que le fichier est loadé sur le serveur pour pouvoir ensuite l'afficher mais on ne va pas garder celui-ci éternellement sur le serveur car bonjour le nombre d'images visitées par les internautes et stockées sur le serveur.

Alors voilà, si vous avez une soluce ca serait cool.

Merci.

Oups, j'avais oublié, je ne veux pas que les images soient affichées dans une applet

1 réponse

mojo9 Messages postés 46 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 16 mars 2006
26 janv. 2005 à 11:28
Salut... ce que tu peut faire c'est un peu comme moi j'ai fait :



Pour une image (que je genere en png), je l'ecrit sur le serveur.

De la tu peut l'afficher. C comme tu as fait jusque la.



Le "+" ce serait de dater tes image dans le nom du type
"050126_image1.jpg" ce qui te permet avant chanque ecriture d'image de
lancer une boucle ou un thread qui irais supprimer les image antérieur
au jour de la generation de l'image.



Ainsi les seul image que tu sauvegarde c'est celle generer le jour meme !



Sinon je vois pas trop comment tu pourrais faire.



Moi j'ai pousser le vice + loin, j'ai fait a la minute



Petit exemple :



/* Listing du repertoire */

File fDir = new File (path);

File[] fList = fDir.listFiles();



for (int i=0;i<fList.length;i++) {

toDel = false;



File fDelete = fList[i];



fName = fDelete.getName();

if (fName.length() >= 19) {


fYear =
Integer.parseInt(fName.substring(fName.indexOf(".")-19,
fName.indexOf(".")-15));


fMonth =
Integer.parseInt(fName.substring(fName.indexOf(".")-14,
fName.indexOf(".")-12));


fDay =
Integer.parseInt(fName.substring(fName.indexOf(".")-11,
fName.indexOf(".")-9));


fHour =
Integer.parseInt(fName.substring(fName.indexOf(".")-8,
fName.indexOf(".")-6));

fMinute
= Integer.parseInt(fName.substring(fName.indexOf(".")-5,
fName.indexOf(".")-3));



if ((fYear
< nYear) || (fMonth < nMonth) || (fDay < nDay) || (fHour <
nHour) || (fMinute < nMinute)) {

/* Delete file */

if (!fDelete.delete())toDel = true;

}



if (toDel) {

/* Erreur lors de la suppression */

/* Logger une erreur */

}

}

}



Voila pour l'idée ! Bon courage !


Yom DABAsS alias mojo9
0