Transfert de fichier via une appli web entre un client et le serveur d'applicati [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
18 novembre 2005
-
cs_japouni
Messages postés
25
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
29 mai 2014
-
Bonjour à tous,



comme indiqué dans le titre,je dois faire un upload entre le disque dur du client et le serveur.

Mon idée avait été la suivante :

dans une jsp, à partir d'un imput type file dans un formulaire, je
récupérai le chemin du fichier à transférer (en local pour le client).

Une fois le formulaire de la jsp validé j'appellais une servlet qui
récupérait le chemin où le copier (sur le serveur) et je faisais une
copie de mon fichier.



Le seul problème et il est de taille c'est que le chemin source devient
un chemin local MAIS pour le serveur, donc l'upload n'est pas possible
car le fichier source ne s'y trouve pas.



Est ce que quelqu'un aurait une idée pour me dépanner.

Je travaille avec un serveur d'application IBM WEBSPHERE 5.0 sous Windows 2000.



Merci de m'aider.

2 réponses

Messages postés
15
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
18 novembre 2005

Pour indication je viens de trouver la réponse donc je vais poster cette dernière si quelqu'un en a besoin :



Je récupère mon IP Client dans une servlet, la même qui me servait à faire ma copie.

Les info proviennent d'un formulaire (chemin du fichier).

Les variable sPath et fSource sont initialisées suivnat mon code mais dans une autre partie.



Voici le code :

...

//Recupératon du nom de fichier et construction du chemin de la cible

String sIpClient = "\\\" + req.getRemoteAddr();


sIpClient = sIpClient + "\" + req.getParameter("fichier") ;


//On remplace les : par $


int ipos = sIpClient.indexOf(":");


sIpClient = sIpClient.substring(0,ipos) + "$" + sIpClient.substring(ipos+1);



//On construit l'objet fichier à copier

File fSource = new File(sIpClient);

//On constuit l'objet fichier cible

sNomFichier = fSource.getName();

sCheminCible = sPath + sNomFichier;

File fCible = new File(sCheminCible);

if (copieFichier.copier(fSource, fCible)) {

//Retour

resp.sendRedirect("page voulue");

} else {

resp.sendRedirect("page d'erreur");

}

...

*********************************

Voici la methode qui me permet de copier



static public boolean copier(File source, File destination) throws Exception {



boolean resultat = false;

// Declaration des flux

java.io.FileInputStream sourceFile = null;

java.io.FileOutputStream destinationFile = null;



try {

// Création du fichier :

destination.createNewFile();



// Ouverture des flux

sourceFile = new java.io.FileInputStream(source);

destinationFile = new java.io.FileOutputStream(destination);



// Lecture par segment de 0.5Mo

byte buffer[] = new byte[512 * 1024];

int nbLecture;



while ((nbLecture = sourceFile.read(buffer)) != -1) {

destinationFile.write(buffer, 0, nbLecture);

}



// Copie réussie

resultat = true;

} catch (java.io.FileNotFoundException f) {

System.out.println("Erreur dans Copie - " + f.getMessage());

} catch (java.io.IOException e) {

System.out.println("Erreur dans Copie - " + e.getMessage());

} finally {

// Quoi qu'il arrive, on ferme les flux

try {

sourceFile.close();

} catch (Exception e) {

}

try {

destinationFile.close();

} catch (Exception e) {

}

}

return (resultat);

}

Cette source n'est pas de moi .. je le précise.



A bientôt
Messages postés
25
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
29 mai 2014

Bonjour;


juste une question .Est ce que il n'y a pas un probléme au niveau de axée depuis le serveure pour le post client afin de récupérer le fichier(question de partage de fichier).
merci