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
	}
}