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