IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

envoyer/recevoir fichier vers/depuis servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut envoyer/recevoir fichier vers/depuis servlet
    Bonjour

    J'ai un problème d'envoi/éception de fichier depuis un programme java vers une servlet

    But:
    1) Passer un fichier pdf de Programme.java vers servlet
    2) Puis passer un autre fichier pdf de servlet vers Programme.java

    Remarque:
    Pour mon test, les deux fichiers à envoyer sont les memes : c:/temp/test.pdf
    Mais lorsque j'envoie "test.pdf" de :
    - Programme vers servlet, je devrais obtenir un fichier "FichierATraiterRecupParServlet.pdf"
    - servlet vers Programme, je devrais obtenir un fichier "FichierATraiterRecupParProg.pdf"

    Resultat obtenu:
    1) De Programme vers servlet : rien ne se passe :
    - aucune erreur
    - aucune trace dans les logs,
    - pas de fichier "FichierATraiterRecupParProg.pdf" cree
    2) De servlet vers programme:
    - obtention d'un fichier "FichierATraiterRecupParProg.pdf" mais non lisible car taille du fichier ne correspond pas
    - aucune erreur
    - aucune trace dans les log : je pense donc qu'il n'y a pas eu de communication entre le programme et servlet

    Quelqu'un pourrait-il m'aider à resoudre mon probleme?
    Merci d'avance



    Voici le code que j'utilise pour Programme.java et servlet.

    Programme.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    String sCheminFichierOrigProg ="C:/temp/test.pdf";
    try {
    	// Connection:
    	URL urlservlet = new URL("http://localhost:8080/maservlet/");
    	HttpURLConnection connexion = (HttpURLConnection)urlservlet.openConnection();
    	connexion.setDoInput(true);
    	connexion.setDoOutput(true);
    	connexion.setUseCaches(false);
     
    	// DEBUT Script pour envoyer fichier de Programme vers servlet
    	File fFichierOrigProg = new File(sCheminFichierOrigProg);
    	long lengthFichierOrigProg = fFichierOrigProg.length();
    	byte[] tabByteFichierOrigProg = new byte[(int) lengthFichierOrigProg];
     
    	// Creation d'un byte[] correspondant au fichier a envoye
    	FileInputStream fisOrigProg = new FileInputStream(sCheminFichierOrigProg);
    	fisOrigProg.read(tabByteFichierOrigProg);
    	fisOrigProg.close();
    	// Envoi de fichier (sous forme de byte[]) vers la servlet
    	OutputStream outProg = connexion.getOutputStream();
    	outProg.write(tabByteFichierOrigProg, 0, tabByteFichierOrigProg.length);
    	outProg.flush();
    	outProg.close();
    	// FIN Script pour envoyer fichier de Programme vers servlet
     
    	// DEBUT Script pour recuperer fichier de servlet vers Programme
    	InputStream instrProg = connexion.getInputStream();
    	byte[] tabByteFichierRecupParProg = new byte[instrProg.available()];
    	instrProg.read(tabByteFichierRecupParProg);
    	instrProg.close();
     
    	// Transformation de byte[] en fichier
    	ByteArrayInputStream baisFichierRecupParProg = new ByteArrayInputStream(tabByteFichierRecupParProg);
    	File fFichierRecupParProg = null;
    	File fDir = new File("C:/temp/");
    	try {
    		fFichierRecupParProg = File.createTempFile("FichierATraiterRecupParProg", ".pdf", fDir);
    		FileOutputStream fosFichierRecupParProg = new FileOutputStream(fFichierRecupParProg);
    		int i;
    		while ((i = baisFichierRecupParProg.read()) != -1) {
    			fosFichierRecupParProg.write(i);
    		}
    		if (baisFichierRecupParProg != null) {
    			baisFichierRecupParProg.close();
    		}
    		fosFichierRecupParProg.close();
    	} catch (Exception e) {
    		e.printStackTrace();
    		System.err.println(e.getMessage());
    	}
    	// FIN Script pour recuperer fichier de servlet vers Programme
    } catch (FileNotFoundException e1) {
    	e1.printStackTrace();
    } catch (IOException e2) {
    	e2.printStackTrace();
    }
    System.out.println("THE END");


    SERVLET:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    public class servlet extends HttpServlet {
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    	throws ServletException, IOException {
     
    		// DEBUT Script pour recuperer le fichier (sous forme d'un byte[]) en provenance de Programme.java
    		InputStream instrServlet = request.getInputStream();
    		byte[] tabByteFichierRecupParServlet = new byte[instrServlet.available()];
    		instrServlet.read(tabByteFichierRecupParServlet);
    		instrServlet.close();
     
    		// Transformation du byte[] en fichier
    		ByteArrayInputStream baisFichierRecupParServlet = new ByteArrayInputStream(tabByteFichierRecupParServlet);
    		File fFichierRecupParServlet = null;
    		File fDir = new File("C:/temp/");
    		try {
    			fFichierRecupParServlet = File.createTempFile("FichierATraiterRecupParServlet", ".pdf", fDir);
    			FileOutputStream fosFichierRecupParServlet = new FileOutputStream(fFichierRecupParServlet);
    			int i;
    			while ((i = baisFichierRecupParServlet.read()) != -1) {
    				fosFichierRecupParServlet.write(i);
    			}
    			if (baisFichierRecupParServlet != null) {
    				baisFichierRecupParServlet.close();
    			}
    			fosFichierRecupParServlet.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			System.err.println(e.getMessage());
    		}
    		// FIN Script pour recuperer le fichier (sous forme d'un byte[]) en provenance de Programme.java
     
     
    		// DEBUT Script pour envoyer fichier vers Programme.java
    		String sFichierOrigServlet = "C:/temp/test.pdf";
    		File fFichierOrigProg = new File(sFichierOrigServlet);
    		long lengthFichierOrigServlet = fFichierOrigProg.length();
    		byte[] tabByteFichierOrigServlet = new byte[(int) lengthFichierOrigServlet];
    		try {
    			FileInputStream fisOrigServlet = new FileInputStream(sFichierOrigServlet);
    			int i = fisOrigServlet.read(tabByteFichierOrigServlet);
     
    			ServletOutputStream outServlet = response.getOutputStream();
    			// response.setHeader("Content-Disposition", "attachment;filename=" + sFichierOrigServlet);
    			outServlet.write(tabByteFichierOrigServlet);
    			fisOrigServlet.close();
    			outServlet.flush();
    			outServlet.close();
    		} catch (IOException ex) {
    			log("probleme envoi fichier, erreur= " + ex);
    		}
    		// FIN Script pour envoyer fichier vers Programme.java
    	}
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    c'est pas comme çà qu'on fait de l'upload en http, ou alors uniquement si la requete est "put". Le mieux et de faire ton upload avec un client http, comme si c'était un upload formulaire, en utilisant par exemple la librairie commons httpclient de jakarta. Pour le coté servlet il faut ensuite réceptionner en utilisant commons fileupload de jakarta aussi.

Discussions similaires

  1. [VB.NET] [PPC] Envoyer/Recevoir fichiers PC<->PPC
    Par anthony70 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/08/2008, 18h05
  2. Réponses: 3
    Dernier message: 02/07/2008, 20h08
  3. [DEV] Envoyer des fichiers vers (menu contextuel)
    Par AnTaReS7364 dans le forum Apple
    Réponses: 7
    Dernier message: 16/09/2007, 18h53
  4. Réponses: 14
    Dernier message: 14/03/2007, 20h32
  5. Envoyer un fichier vers un dossier partagé Windows
    Par elfiestador dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 03/01/2007, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo