hluder
Messages postés35Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention 6 juin 2008
-
2 mai 2008 à 11:54
srvinfor
Messages postés1Date d'inscriptionsamedi 11 octobre 2008StatutMembreDernière intervention11 octobre 2008
-
11 oct. 2008 à 22:41
Bonjour!!!
Alors voilà mon nouveau probleme!
Mon client m'envoi un fichier, je le récupère et je le copie sur mon serveur
TOut pourait bien aller sauf que... le fichier sur mon serveur est vide
voilà mon code:
File file = new File(uri);//fichier qu ej'ai récupéré du client
File file3=new File(fichier); // je crée un fichier sur le serveur
FileOutputStream file2=new FileOutputStream(file3);
byte[] tab = new byte[(int)file.length()];
FileInputStream fi = new FileInputStream(file);
DataInputStream di = new DataInputStream(fi);
di.readFully(tab, 0, (int)file.length());
file2.write(tab);
//je close tout
file2.close();
fi.close();
di.close();
//utilisation de mon file
int res=MailClient.envoyerMail(dest,objet,message,file3);
hluder
Messages postés35Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention 6 juin 2008 6 mai 2008 à 10:19
Sa y est ça marche j'ai modifié le code en prenant un DiskFileUpload
Tout marche niquel!!
DiskFileUpload fu = new DiskFileUpload();
// maximum size before a FileUploadException will be thrown
fu.setSizeMax(1000000);
// maximum size that will be stored in memory
fu.setSizeThreshold(4096);
// the location for saving data that is larger than getSizeThreshold()
fu.setRepositoryPath("/tmp" );
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
FileItem fi = (FileItem)i.next();
// filename on the client
String fileName = fi.getName();
// save comment and filename to database
System.out.println( "Description du fichier : "+fileName );
// write the file
File uploadfile=new File(fileName);
fi.write(uploadfile);
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 4 mai 2008 à 12:58
ette API est dispo ici : http://commons.<layer id= "google-toolbar-hilite-0" style="background-color: Yellow; color: black;">apache</layer>.org/fileupload/
Elle permet de récupérer des fichiers envoyées depuis une page web avec la balise input type=<layer id="google-toolbar-hilite-3" style="background-color: Cyan; color: black;">file</layer>
la doc est ici : http://commons.<layer id="google-toolbar-hilite-1" style="background-color: Yellow; color: black;">apache</layer>.org/fileupload/using.html
et les points inportant sont :
- le formulaire en HTML
<form action="<layer id="google-toolbar-hilite-18" style="background-color: Fuchsia; color: black;">upload</layer>.do" method="POST" enctype="multipart/form-data" >
file</layer>" name ="monFichier">
- le code java
// Create a factory for disk-based <layer id ="google-toolbar-hilite-5" style="background-color: Cyan; color: black;">file</layer> items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(yourMaxMemorySize);
factory.setRepository(yourTempDirectory);
// Create a new <layer id="google-toolbar-hilite-6" style="background-color: Cyan; color: black;">file</layer><layer id="google-toolbar-hilite-19" style="background-color: Fuchsia; color: black;">upload</layer> handler
ServletFileUpload <layer id="google-toolbar-hilite-20" style="background-color: Fuchsia; color: black;">upload</layer> = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = <layer id="google-toolbar-hilite-22" style="background-color: Fuchsia; color: black;">upload</layer>.parseRequest(request);// request
est une instance de HttpServletRequest (diponible depuis le doGet ou le doPost de la servlet)
// .... traitement de contolez cf. doc
// Ecriture du fichier sur le serveur
<layer id="google-toolbar-hilite-28" style="background-color: Cyan; color: black;">File</layer> uploadedFile = new <layer id="google-toolbar-hilite-29" style="background-color: Cyan; color: black;">File</layer>(...);
item.write(uploadedFile);
Vous n’avez pas trouvé la réponse que vous recherchez ?
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 5 mai 2008 à 13:20
pour l'FileUpload, tu télécharge le jar sur lr site d'appache e tu le rajoute à ton class path (les lib de ton projet).
action="<layer id="google-toolbar-hilite-18">upload</layer>.do" est en struts, ça peut être ta servlet => action="<layer id="google-toolbar-hilite-18">maServlet</layer>"
c'est en iterant ici :
List /* FileItem */ items = <layer id="google-toolbar-hilite-22">upload</layer>.parseRequest(request);
je te conseille de lire la documentation sur le site apache, et si je me rapelle bien il y a des exemples (sample in english).
hluder
Messages postés35Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention 6 juin 2008 5 mai 2008 à 13:53
Lut je m'enterre tellement sa m'enerve
Alors j'ai lu sur le net que je devais mettre a part mon upload de fichier (lui fair eun <form> rien qu'à lui
Mais le pb est : oui mais comment je fais pour valider les autre champs alors??
enfin bon je vais essayer de tester des tones de chose, en meme temps j'ai que ça comme solution.
hluder
Messages postés35Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention 6 juin 2008 5 mai 2008 à 15:07
Bon jai un peu avancé mais j'ai uen erreur :
java.lang.NoSuchMethodError: org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(Lorg/apache/commons/fileupload/RequestContext;)Ljava/util/List;
elle vient à cause de :
List /* FileItem */ items = upload.parseRequest(request);