|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Bonjour,
Je sais que le sujet a été traité sous tous ses angles mais je n'arrive pas à trouver ce qui m’intéresse. Petite explication de mon application (en local): Environnement de développement: NetBean 6.9.1 Serveur : glassfish 3.0.1 Pdf : itext 5.0.6 En cliquant sur un lien je créé un fichier pdf (il est stocké sur le serveur : D:\Program Files\glassfish-3.0.1\glassfish\domains\domain1) J'aimerai que juste après l'avoir créé, la fenêtre de téléchargement du navigateur me propose de le télécharger. Est-ce possible? |
|
|
00
|
|
|
#2 |
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 760 ![]() |
T'as des tonnes de tuto à ce propos sur le net, reviens vers nous avec plutôt des questions plus précises.
|
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Bonjour, je reviens avec des questions plus précise sur le sujet:
J'ai trouvé un code qui a l'air de faire ce que je veux sauf que je n'arrive pas a le tester, j'ai une erreur: Voici le script: Code :
ATTENTION: StandardWrapperValve[GestionFormServlet]: PWC1406: Servlet.service() for servlet GestionFormServlet threw exception java.lang.IllegalStateException: PWC3990: getWriter() has already been called for this response at org.apache.catalina.connector.Response.getOutputStream(Response.java:676) at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:205) Je ne comprend pas pourquoi le "getWriter" est déjà utilisé, je ne l'ai pas utilisé avant. Merci de votre aide |
||
|
|
00
|
|
|
#4 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Quel est le code complet de la servlet comment l'invoques-tu ? Par URL ? Un dispatch ?
|
|
|
00
|
|
|
#5 | |||
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 760 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Merci pour vos réponses.
DevServlet: la fonction "setComplete" n'existe pas pour "response". Nemek: La servlet est assez énorme donc je vais pas la mettre compète. Elle est appelée par "url" lors d'un clique sur un "select". Puis je regarde les paramètres et je redirige vers la bonne fonction privée dans la servlet. Voila un peu le cheminement. |
|
|
00
|
|
|
#7 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Il ne te reste plus qu'à mettre un breakpoint sur la méthode getWriter.
|
|
|
00
|
|
|
#8 | |
![]() ![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 2 760 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | ||
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Est-ce que cela peut être à cause du "out"?
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Bon ben c'était bien a cause du "out". je l'ai mis en commentaire pour l'instant et ça marche.
Merci pour votre aide. |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
J'ai problème d'url, mais cela vient de moi:
j'ai un fichier dans le dossier "web/pdf/attestation" de mon application. J'arrive pas a trouver l'url pour récupérer le fichier dans ce dossier. j'ai testé plusieurs url: formation/web/pdf/attestation/attestation1.pdf /formation/web/pdf/attestation/attestation1.pdf http://localhost:8080/formation/pdf/...testation1.pdf http://localhost:8080/formation/web/...testation1.pdf Merci de votre aide encore une fois. |
|
|
00
|
|
|
#12 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Au niveau de la request tu peux reconstruire l'URL soumise par le client.
Ca permet de construire une URL conforme. Pour la première, l'URL doit être relative à l'URL de la page qui contient le lien. Par exemple pour la page "http://localhost:8080/application/index.html" le lien est "web/pdf/attestation/attestation1.pdf" La deuxème devrait marcher normalement. |
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
|
|
|
00
|
|
|
#14 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Dans ton projet il y a un dossier "web" mais la racine de ton application c'est pas le projet mais le répertoire "web"
URL relative avec chemin relatif "pdf/attestation/attestation1.pdf" URL relative avec chemin absolu "/application/pdf/attestation/attestation1.pdf" URL absolue "http://localhost:8080/application/pdf/attestation/attestation1.pdf" |
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Bonjour,
merci pour cette explication; j'ai testé les 3 mais aucunes ne fonctionnent. J'ai bien remplacé "application" par mon "context path" qui est "formation", mais je tombe toujours sur la même page: Error 500 java.io.FileNotFoundException: http:\localhost:8080\formation\pdf\attestation\Attestation1.pdf (Syntaxe du nom de fichier, de répertoire ou de volume incorrecte) Le fichier existe bien dans le dossier donc je pense que cela reste une erreur d'url. Merci encore. |
|
|
00
|
|
|
#16 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Euh... Qu'est-ce que tu essayes de faire au juste ?
Car l'URL ce n'est pas un chemin disque ! Tu veux récupérer le chemin sur le disque d'une ressource de ton application ? Si c'est le cas il faut utiliser ServletContext.getRealPath |
|
|
00
|
|
|
#17 | ||
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Ben en fait, je voudrais qu'un client, qui utilise mon application à distance, puisse télécharger le fichier pdf via sont navigateur, mais comme je travaille en local, je stock le fichiers pdf dans un dossier de mon application pour pouvoir utiliser une url relative afin de ne pas la changer dés que je mettrais mon application sur un serveur à part.
j'utilise ce bout de code dans ma servlet: Code :
|
||
|
|
00
|
|
|
#18 | ||
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
problème résolu, c'est bien avec getServletContext().getRealPath();
j'ai remplacé l'url actuel par: Code :
|
||
|
|
00
|
|
|
#19 |
|
Membre habitué
![]() Gael MoroIngénieur Informatique et Réseaux Inscription : avril 2011 Messages : 188 ![]() |
Re,
désolé j'ai juste un petit problème: juste avant de télécharger le pdf je le créé et le stock dans getServletContext().getRealPath("pdf/attestation") mais le problème c'est le path retourné est celui-ci: c:\dossier\dossier\FormationApp\build\web\pdf\attestation\ il est dans le dossier "build", ce qui veux dire que le fichier est supprimé si on fait un "clean" alors que je voudrais qu'il soit conservé dans: c:\dossier\dossier\FormationApp\web\pdf\attestation\ Y a t-il une solution? |
|
|
00
|
|
|
#20 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 736 ![]() |
Oui utilises un fichier de propriété dans lequel tu mets le chemin vers lequel tu veux conserver le fichier.
La notion de "clean" est spécifique à ton environnement de développement. En déploiement ça n'existe pas. Pour ton application le répertoire "c:\dossier\dossier\FormationApp\web\pdf\attestation\" n'existe pas ! C'est un répertoire projet, de développement. Quand ton application sera installé, il n'y aura aucun répertoire de la sorte. Il n'est pas propre de stocker un fichier dans l'application web, car n'importe quel bédouin peut taper l'URL et aller chercher le fichier. Pourquoi stocker sous forme de fichier et ne pas générer le PDF en mémoire et l'envoyer ensuite ? |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com