Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2007, 17h22   #1
Membre régulier
 
Inscription : février 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 154
Points : 77
Points : 77
Envoyer un message via MSN à mchicoix
Par défaut Upload en base avec xmlrad2006 - Java

Bonjour,

J'arrive bien a sauvegarder mes fichiers dans le repertoire d'upload mais comment faire apres pour le mettre dans un champ de type blob sous mysql ?
Y-a t-il une action toute faite pour cela ?

mon environnement :
XMLRAD2006
MySQL
J2EE

merci par avance pour votre aide
Michel
mchicoix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 08h56   #2
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Pour ce qui concerne la manipulation des champs blob (ou image, ...), j'instancie et utilise en Delphi un objet TADoQuery (connexion native ADO) qui lui permet cela. En Java tu pourras certainement faire cela aussi avec un objet qui supporte ces champs (_Connection, _RecordSet, ...) . L'inconvénient est que tu doubles la connexion à la base, attention donc à l'architecture de ton application, à la gestion des transactions, etc...
Autrement à part passer par une appli externe, je vois pas trop...

Michael
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 09h02   #3
Membre régulier
 
Inscription : février 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 154
Points : 77
Points : 77
Envoyer un message via MSN à mchicoix
ah mince je pensais qui avait une methode pour au moins recuperer la connexion avec la base ....
bon je vais essayer d'adopter le meme principe que toi en Java en attendant d'avoir une instruction de ce type dans une prochaine version

a+
michel
mchicoix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 10h03   #4
Membre confirmé
 
Avatar de Jeweller
 
Inscription : août 2003
Messages : 354
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 354
Points : 226
Points : 226
Oui, j'y avais pensé aussi... et peut etre c'est réalisable d'ailleurs? Mais en attendant la "double connexion" me satisfait.
Jeweller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 13h47   #5
Membre régulier
 
Inscription : février 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 154
Points : 77
Points : 77
Envoyer un message via MSN à mchicoix
mais oui ils vont nous la faire cette instruction

et surtout qu'a mon avis au niveau architecture c'est pas top d'avoir 2 connexions pour la meme base surtout pour faire ce genre de chose ... pas facile a expliquer la bidouille surtout si on veut aller sur plusieurs bases comme XMLRAD le permet ....

A mediter

a+

Michel
mchicoix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 17h01   #6
Membre régulier
 
Inscription : février 2005
Messages : 154
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 154
Points : 77
Points : 77
Envoyer un message via MSN à mchicoix
Allez je vous poste le code java qui fonctionne pour ceux qui en aurait besoin

Par contre avis a la population pour avoir l'acces a la base d'une data source ce qui peut servir pour faire des requetes du type ou mapper les champs de type blob et adieu les bidouilles et vive le non codage

au debut les imports habituels ...
Code :
1
2
3
4
5
6
 
import xmlclx.*;
import java.io.*;
import java.sql.*;
import java.text.*;
import java.util.Date;
Dans la classe la declaration de notre nouvelle connexion ( c'est celle la que j'aimerais eviter ...
Code :
1
2
 
	private Connection conn = null;

Dans un beforexmlgram par exemple (ici on ne gere qu'un fichier)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
		// nom du fichier sans les repertoires
		String requestFileName = xmlRequest.getFileName(0); 
		// nom du fichier de stockage
		String requestTempFileName = context.getValue("XMLC_DefaultDataDir") + "\\upload\\" +  requestFileName; 
    	xmlRequest.saveFileNo(0, requestTempFileName);
 
     	try
     	{
     		// ouverture connexion     		
Class.forName("com.mysql.jdbc.Driver");
   			conn = DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
    		conn.setAutoCommit(true);
 
     		File myFile = new File(requestTempFileName);
     		FileInputStream istreamImage = new FileInputStream(myFile);
     		try 
     		{
     			// Insert into database
     			PreparedStatement ps = conn.prepareStatement("INSERT INTO fichiers (TEXT_DSC, TEXT_DATA) values (?,?)");
     		    ps.setString(1, requestFileName);
     		    ps.setBinaryStream(2, istreamImage, (int) myFile.length());
     		    ps.executeUpdate();
     		    ps.close();
         		// fermeture de la connexion     			conn.close();
     		 } 
     		 finally 
     		 {
     			istreamImage.close();
     		 }
 	    }catch (Exception ex){
	    	xmlRequest.raiseError("Exception....", ex.toString());
        }
pour la table fichier j'ai mini un longblob pour le champ TEXT_DATA

A+
michel
mchicoix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h08.


 
 
 
 
Partenaires

Hébergement Web