2010-08-25 6 views
0

Mon application est dans JSP/Struts et s'exécute sur WebSphere. Je n'ai pas accès au serveur/vraiment/alors j'essaye de faire tout cela depuis l'application elle-même (actions Struts & config, JSP, etc).Réécrire l'URL pour affecter le nom de fichier "Enregistrer sous"

J'ai une page qui affiche des liens pour les documents PDF que l'utilisateur pourrait vouloir regarder. Quand ils cliquent sur le lien, il est transféré à l'action STRUTS 'document view' qui effectue le travail pour récupérer le PDF à partir du système backend, puis affiche le PDF dans la fenêtre du navigateur. Tout cela fonctionne très bien.

Les utilisateurs ont demandé à ce que le nom de fichier du document soit personnalisé pour chaque document quand ils vont dans Fichier-> Enregistrer sous ... mais maintenant le navigateur veut essayer de nommer le document après le nom de mon Struts action. Exemple: "documentView.pdf"

J'ai le nom de fichier que je veux utiliser transmis à l'action STRUTS et j'ai essayé d'utiliser l'en-tête "Content-Disposition" pour le définir, mais je n'ai pas réussi à le faire fonctionner . En fait cela fonctionne très bien si j'utilise "attachment; filename =" myfilename "" mais il FORCE tout de suite la boîte de dialogue "Save As ...", ce que je ne veux pas non plus.

Je veux être en mesure de regarder le PDF en ligne dans la fenêtre du navigateur et l'enregistrer avec un nom de fichier personnalisé si je le souhaite. J'ai lu que cela pourrait être possible avec la réécriture d'URL mais j'ai du mal à comprendre comment cette technique pourrait fonctionner.

Toutes les idées seront grandement appréciées.

Répondre

3

Modifiez la partie "pièce jointe" de Content-Disposition en "inline".

La prise en charge de Content-Disposition est floue. Avant qu'il ne soit pris en charge, vous pouviez faire en sorte que le navigateur fasse le bon choix en plaçant une clé/valeur superflue à la fin de l'adresse URL. Comme:

http://example.com/getPDF?id=123213&filename=mydoc.pdf 

Certains navigateurs ont pris le dernier bit de l'URL comme nom de fichier. Je ne sais pas si ça fonctionne encore.

+0

Merci pour votre suggestion. Je vois maintenant que j'ai oublié de le mentionner dans le post original mais j'avais déjà essayé ça ne marchera pas. Il semble que votre déclaration sur le soutien du navigateur flaky est sur place et les navigateurs dont j'ai besoin pour travailler sur (ie6 principalement - boo!) Ne supportent pas ce 'inline'; fonctionnalité. – Joel

+0

FTR cela fonctionne très bien dans Firefox, mais pas dans IE6 ... – Joel

+0

J'ai trouvé la même chose que vous - fonctionne en FF mais pas IE6. J'y reviendrai peut-être un jour. – Joel

Questions connexes