Je n'ai pas essayé, mais est-ce que la solution suivante ne conviendrait pas ?
<a href="rapport.pdf" type="application/octetstream">click ici</a>
(je ne sais pas à quel point l'attribut type est standard et implémenté dans les navigateurs...)
Sinon, plutôt que de donner un lien direct vers le fichier, tu peux mettre un lien vers une page qui se chargera de modifier le type MIME de la réponse avant d'envoyer le fichier (un petit script PHP peut faire l'affaire).
Et enfin, si ton appli web est une appli Java avec servlets etc, tu peux mettre en place un bouton un peu plus complexe qu'un simple lien mais qui te permettra de mieux maîtriser la réponse envoyée au navigateur.
Exemple de code trouvé dans une de mes applications, à toi de voir si tu peux t'en inspirer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public String processPage(HttpServletRequest request, HttpServletResponse response) {
if (isButtonPressed(request, "Button_CustomerFile")) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
// on génère le PDF et on le met dans la variable out...
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=FicheClient.pdf;");
response.setContentLength(out.size());
response.getOutputStream().write(out.toByteArray());
response.getOutputStream().flush();
response.getOutputStream().close();
return REDISPLAY_RESULT;
}
} |
EDIT : C'est un peu vieux dans mon esprit, mais il me semble que c'était le header "attachment" qui forçait l'apparition de la boîte de dialogue.
Partager