Se connecter avec
S'enregistrer | Connectez-vous

[JAVA+JSP]Téléchargement de fichier et nom de fichier étrange

Dernière réponse : dans Programmation

Hi all.

ENVIRONNEMENT
- Fichier JSP contenant du code java
- Serveur apache/tomcat + Jonas Linux (sans importance je pense... mais sait on jamais)
- Client Web (obligatoire car intranet): IE 6


Le problème est assez simple quoique curieux.
1) J'envoie un mail (via un batch java) à des utilisateurs avec un lien menant au téléchargement d'un fichier (peu importe le format, ce n'est pas le problème)
2) Lorsque le mail est reçu, c'est vers une JSP qu'il pointe (de manière à permettre un téléchargement).
3) Tout ce cycle fonctionne sans accroc, d'autant plus que je gère sans difficulté tant le path serveur que l'apparition de la pop up de download;

Donc... "Mais c'est quoi ton problème alors???"

Et bien voilà mon problème.
1) Admettons
File : X2001433.0.csv
PATH : /appli/hc0/data/fic/2008-05-27/X2001433.0.csv

Fichier qui apparaît en téléchargement X2001433[1].0.csv

:heink: 
Et cela se produit quelque soit le fichier que je mets à disposition.

  1. pathFile="/appli/hc0/data/fic/2008-05-27/X2001433.0.csv";
  2. File f = new File (pathFile);
  3. if(f.exists())
  4. {
  5. //récupération du fichier par bytes
  6. response.setHeader ("Content-Disposition", "attachment; filename=\"" + f.getName() + "\"");
  7. InputStream in = new FileInputStream(f);
  8. OutputStream outs = response.getOutputStream();
  9. try
  10. {
  11. int bit = in.read();
  12. while ((bit) >= 0) {
  13. outs.write(bit);
  14. bit = in.read();
  15. }
  16. catch (Exception e)
  17. {
  18. ...
  19. }
  20. outs.flush();
  21. in.close();


en imprimant les valeurs contenues dans f.getname(), f.getabsolutepath, tout est OK et correspond bien à pathFile.

Si quelqu'un a une idée...

Lassé par la pub ? Créez un compte

KangOl a dit :
le problème c'est ie :o 

ça je me doute bien :/  mais y a t'il une astuce de contournement car là je sèche. Je soupçonne une me... concernant la gestion des temporaires, mais c'est quand même pénible de fournir un fichier qui n'est pas strictement nommé de la même manière que celui présent sur le serveur!

essaye de rajouter:
  1. response.setContentType ("application/octet-stream" );


et le nom du fichier à mettre dans le setHeader peut être statique:
  1. String fileName = "toto.cvs";
  2. response.setHeader ("Content-Disposition", "attachment; filename=\""+fileName +"\"" );


(mais en fait je suppose que c'est parce que le client à déjà un fichier du même nom dans son répertoire temporaire windows que tu à le [1])

cisco a dit :
essaye de rajouter:
  1. response.setContentType ("application/octet-stream" );


et le nom du fichier à mettre dans le setHeader peut être statique:
  1. String fileName = "toto.cvs";
  2. response.setHeader ("Content-Disposition", "attachment; filename=\""+fileName +"\"" );


(mais en fait je suppose que c'est parce que le client à déjà un fichier du même nom dans son répertoire temporaire windows que tu à le [1])

J'avais déjà ajouté tout cela, et je ne pouvais pas laisser en statique le nom (valeur obtenue dans un dossier du serveur).
De là, je piste aussi le TMP sur le poste client et là ... pas de remède:/
Lassé par la pub ? Créez un compte