Ajouter un commentaire

apone

Bon, j'ai tout d'abord essayé avec les liens, plutôt que de mettre les images dans la table :
http://localhost:8080/EBouffeCorp/ress/products/35.jpg
me retourne bien une image, mais cette image pointe vers le répertoire de mon application (dans le workspace) et non sur mon système de fichiers. C'est à dire que je suis capable d'ajouter une image dans le système de fichiers avec ce path :
String imgPath = getServletContext().getRealPath("/") + "./ress/products/";
mais que je suis toujours incapable d'aller la lire avec mon application... En gros :
<img src='ress/products/35.jpg' />
et :
<img src='http://localhost:8080/EBouffeCorp/ress/products/35.jpg' />
poitent vers la même image. Il y a donc bien 2 répertoires : l'un où j'upload mon image, et l'autre où je vais la chercher...

Bref, de toute façon, même si cela marchait ce serai vraiment "crade" comme solution, donc je préfère essayer l'insertion de l'image dans la base.

J'ai corrigé le bout de code en ajoutant un bloc finally pour ma connexion, statement et stream se ferment coute que coute. J'ai également vérifié dans la doc d'HSQLDB pour voir si le type BLOB était supporté. Malheureusement HSQLDB ne semble pas supporter ce type de données :

http://hsqldb.org/doc/guide/ch09.html#datatypes-section

ce qui m'ai confirmé lorsque j'essaye de créer ma table :
CREATE TABLE temp_table(name VARCHAR(256), pic BLOB);
me retourne :
Wrong data type: BLOB in statement ....
Je pense que ce qui pourrait être "équivalent" serait de déclarer ma colonne en LONGVARBINARY, et là effectivement la table se crée.

Malheureusement, lors de l'exécution de la requête à partir de ma servlet, cela ne passe pas. Et je ne parviens pas à récupérer une trace de ce qui s'est passé. Tout ce que je sais, c'est que ma base reste ouverte et que donc le bloc finally n'a même pas été exécuté ???

Suis-je en train d'essayer d'ajouter une donnée dans ma table qui ne correspond pas au type déclaré ? Je ne pense pas. Voilà ce que me dit la javadoc pour la méthode :
statement.setBinaryStream(2, stream, (int)file.length());

Quote:
Sets the designated parameter to the given input stream, which will have the specific number of bytes. When a very large binary value is input to a LONGVARBINARY parameter, it may be more practical to send it via java.io.InputStream object. The data will be read from the stream as needed until end-of-file is reached

Je pense donc avoir correctement déclaré le type de ma colonne pour les données à y ajouter, mais pourquoi cela ne marche t-il pas ? Cela provient-il du fait que mon stream est déclaré en FileInputStream plutôt qu'en InputStream ? J'ai essayé de changer, mais même résultat.

Je sèche et je suis pas loin d'abandonner... :(

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H  V     V  EEEE  N   N  TTTTTT 
H H V V E NN N TT
HHHH V V EEE N N N TT
H H V V E N NN TT
H H V EEEE N N TT