[Java] Transfert de fichier Client-Serveur [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
samedi 20 juin 2009
Statut
Membre
Dernière intervention
20 juillet 2009
-
 aiglefin -
Bonjour,

dans le cadre d'une application Web en Java, j'ai besoin que, via un formulaire, les utilisateurs puissent envoyer des fichiers (tout type : classeur Excel, image...) au serveur et que ces derniers soient donc enregistrés dans le répertoire de l'application.

Mon problème actuellement est que les fichiers ne sont pas entièrement restitués (enfin je pense qu'ils le sont, mais je dois avoir un problème au niveau de l'écriture), je m'explique : lorsque j'upload le fichier "Blabla.txt", dont le contenu est : "Bonjour, nous sommes le jeudi 16 Juillet 2009 et le ciel est ensoleillé.", le fichier alors sauvegardé sur le serveur est : "Blabla.txt" dont le contenu est : "oju,nu omsl ed 6Jilt20 tl ileteslil.", on peut remarquer en s'attardant sur ce charabia qu'une lettre sur deux est écrite seulement. Dans le cas d'une image, je ne peux pas faire de test car on ne peut plus la visualiser après qu'elle ait fait ce trajet.

Cette constatation me fait penser qu'il s'agit d'un problème d'encodage, mais comme je n'y connais rien... je ne saurais être certain.

Bref, voici mon code :

boolean isMultipart = FileUpload.isMultipartContent(request);
DiskFileUpload upload = new DiskFileUpload();

List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
}
String nomFichier = ((FileItem)items.get(0)).getName();
nomFichier=nomFichier.substring(nomFichier.lastIndexOf("\\")+1);

InputStream fis = null;
fis = (InputStream) ((FileItem)items.get(0)).getInputStream();
FileOutputStream fos = new FileOutputStream(new File("monDossier/"+nomFichier));
while(fis.read() != -1) {
fos.write(fis.read());
}

fos.close();
fis.close();


Au niveau de la JSP, le formulaire encode en multipart :

<form name="formfile" method="post" action="/adminnat/updateDocumentation" enctype="multipart/form-data">
<input type="file" name="fichierdoc">
<input type="submit" value="Valider">
</form>


Donc voila, après maintes recherches pour arriver jusqu'à ce point, cette fois je suis au point mort et mes recherches ne me débloquent pas. ><

Si cela vous inspire, n'hésitez pas à me donner des conseils et si j'ai tout faux sur la méthode et qu'il y a beaucoup plus simple, n'hésitez pas non plus! :)

Merci de m'avoir lu et bonne journée.

1 réponse

Messages postés
4
Date d'inscription
samedi 20 juin 2009
Statut
Membre
Dernière intervention
20 juillet 2009

Bon ok, j'ai réalisé juste après avoir posté ce message :

Je fais un double fis.read(), donc normal que je saute des caractères...

Je suis mort de honte mais je laisse ce message au cas où ça peut en aider certains. :)

Voila le morceau corrigé (juste la boucle conditionnelle) :

int fisread = fis.read();
while(fisread != -1) {
fos.write(fisread);
fisread = fis.read();
}

Je vais aller me petit-suicider.

Bonne journée et merci pour votre soutien! (bah oui, le seul fait d'avoir posté mon problème ici m'a fait comprendre la source de celui-ci) ;)
il n'ya vraiment pas de quoi à avoir honte je travaille sur un projet d'archivages et par plus tard que tout à l'heure j'ai eu la même situation 50 mn aprèd avoir posé mon problème j'ai trouvé la solution en fouinant sur le site proprietaire.