Afficher une image dans une page web depuis une bdd

Signaler
Messages postés
1
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
25 janvier 2005
-
Messages postés
46
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
16 mars 2006
-
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

Messages postés
46
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
16 mars 2006

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