begin process at 2010 02 10 01:34:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

JavaServerPage (JSP)

 > COMMENT FORCER LE TÉLÉCHARGEMENT D'UN FICHIER

COMMENT FORCER LE TÉLÉCHARGEMENT D'UN FICHIER


 Information sur la source

Note :
7 / 10 - par 8 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :JavaServerPage (JSP) Niveau :Initié Date de création :04/11/2004 Vu / téléchargé :35 014 / 4 929

Auteur : paohlott

Ecrire un message privé
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

 Description

Lorsqu'on met un lien vers un fichier dans une page web, il arrive que celui-ci soit directement ouvert au lieu d'être téléchargé. Dans ce cas pour télécharger le document, l'utilisateur doit cliquer sur le bouton droit de la souris et choisir "enregistrer la cible sous...", ce qui n'est pas très pratique.

Pour que le navigateur n'ouvre pas le fichier et qu'il le propose directement en téléchargement, il faut utiliser un langage dynamique, ici du jsp. Une solution équivalente existe aussi en php à ma connaissance.

J'ai mis 2 fichiers dans le zip :
- testDownloadFile.html qui montre comment écrire un lien ou un bouton permettant le téléchargement d'un document

- downLoadFile.jsp, qui est appelé lorsqu'on clique sur le lien ou le bouton de testDownLoad.html, et qui s'occupe de forcer le téléchargement

Pour faire fonctionner ces fichiers, il faut remplacer dans le fichier html le nom du document à télécharger par un des votres, et il faut mettre dans le fichier jsp le chemin du répertoire qui contient ce document.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture BASE DE DÉPART POUR CRÉER UN JEU (APPLET SWING)
Source avec Zip Source avec une capture CHAT - SERVEUR ET CLIENT(APPLET) - ASSEZ SIMPLE

 Sources de la même categorie

Source avec Zip JAVA SERVER PAGE par pasteure
Source avec Zip PAGES JSP / JEU DU NOMBRE SECRET par chatmar
Source avec Zip SIMPLE APPLICATION D'AUTHENTIFICATION JSF+JPOX+MYSQL par bensFouad
ENCODING A STRING USING HTML ENTITIES par futer
Source avec Zip AUTHENTIFICATION ET QUESTIONNAIRE par namstou3

Commentaires et avis

Commentaire de newhack25 le 06/11/2004 08:52:41

Je vais télécharger ton script il allair pas mal !

Commentaire de xspid le 12/11/2004 10:35:10

ce script repondait précisément à ce que je cherchais. Malheureusement, il semble ne pas bien marcher chez moi.
Pourtant, le nom du document à télécharger a été changé dans le fichier html et le chemin du répertoire dans le fichier jsp. le chemin du repertoire est du type "../repertoire/"
Lorsque je veux télécharger le fichier, il me met une erreur du genre "... Internet Explorer n'a pa pu ouvrir ce site Internet. Le site requis n'est pas disponible ou n'a pas pu être trouver. réessayer ultérieurement."
???

Commentaire de xspid le 12/11/2004 15:23:20

Pb résolu. C'était une erreur de ma part. Y avait un espace à la fin du nom du fichier à télécharger. et donc comme je l'avais pas mis, evidemment il trouvait pas le fichier.

Ton script est TOP et bien commenté!
thanks!

Commentaire de GrandSpirou le 19/11/2004 00:34:07

Je suis totalement novice dans le domaine, et franchement je suis perdu.
Admettons que sur une page écrite en hmtl, je mette un lien vers un fichier mp3 (xxx.mp3). Ce fichier est dans le répertoire ../audio du site. Mon fichier html est sur la racine.

Qu'est ce que je rentre dans le fichier jsp et dans le fichier html.

Merci de votre aide. Si quelqu'un a une bonne ref de bouquin pour comprendre ce genre de script, je suis preneur...

Ah oui, au fait, ça marche sur tous les browser ? Firefox, Mozilla, Opera, etc ?

Commentaire de paohlott le 19/11/2004 17:39:38

Salut GrandSpirou,

J'ai testé ce script sur Internet Explorer et Mozilla, et ça fonctionne sur les deux.

Concernant ton problème :
-dans le fichier html, il faut changer la séquence :
<a href="downloadFile.jsp?file=document.pdf">document</a>
par :
<a href="downloadFile.jsp?file=xxx.mp3">document</a>
pour faire fonctionner l'hyperlien.

- dans le fichier jsp, il faut changer la ligne :
new File ("chemin du fichier" + request.getParameter("file") );
en remplaçant "chemin du fichier" par le chemin réél sur le disque dur du répertoire "audio". Je ne pense pas que ça fonctionne si tu mets juste "/audio", il faut que tu arrives à savoir quel est le chemin complet sur le disque de ce répertoire. ça sera peut-être du genre "c:/**chemin du site web**/audio/".


Sinon saches que tu n'as pas besoin de bien comprendre le fonctionnement de la page jsp pour l'utiliser. Je n'ai moi-même pas tout compris, je me suis inspiré de solutions existantes.

PA

Commentaire de GrandSpirou le 20/11/2004 00:58:50

Merci Paohlott !

Helas, milles fois helas... ça ne règle pas mon pb ! Quand je clique sur le lien, dans le navigateur, j'ai le fichier  downloadFile.jsp qui s'affiche en format texte (sous Firefox). IE me propose de télécharger le fichier jsp.

J'ai pourtant suivi tes instructions à la lettre !

Le fichier se trouve ici : c:/bast/include/

Je remplace donc dans le fichier jsp :
File f = new File ("c:/bast/include/" + request.getParameter("file") );

Idem pour la page html :
<a href="downloadFile.jsp?file=xxx.mp3"> document </a>

Alors je ne comprends pas !

Quand bien même ça marcherait, quel chemin doit-on mettre sur le serveur web ? "../include/" ?

Merci

Commentaire de paohlott le 22/11/2004 09:30:36

Spirou,

d'après ce que tu me dis, j'ai l'impression que ton serveur ne reconnait pas les fichiers jsp. Tu es hébergé chez qui? Si tu as un hébergeur gratuit alors il ne reconnait probablement que le php, et dans ce cas cette solution ne marchera pas. Mais il existe une solution équivalente pour le php, tu dois pouvoir la trouver sur le web.

Quant à ta dernière question, je n'ai pas bien compris ce que tu demandes.

Pierre-Adrien

Commentaire de Lamesh le 15/07/2005 00:50:10

Bonjour, J'ai moi aussi télécharger ton code.mais malheureusement je n'ai pas su le faire marcher :o(

tout d'abord Tomcat m'a indiqué qu'il ne voulait pas du ">" de la boucle while, car il le prenait pour une fin incorrecte du <% qui ouvre le code.

J'ai du changé la boucle par un "for (int bit = in.read(); bit=0; bit--)". (du bricolage quoi :oS)

ensuite Tomcat a changé d'erreur :org.apache.jasper.JasperException: Impossible de charger la classe pour la JSP.  Et là je sèche je ne sait pas quoi faire.

J'ai bien indiqué le chemin des fichiers avec le chemin réel. Je n'ai pas fait de filtrage par extension de fichiers.

As-tu déjà eu cette erreur ?
Que puis-je faire ?

Merci,
Loïc

Commentaire de morayma le 27/01/2006 23:04:21

J'ai un problème, j'ai download accelerator pour télécharger et il ne retrouve pas les informations concernant le fichier à télécharger. Je crois bien, d'après les commentaires déjà existants, que mon problème provient du fait que je suis hébergé gratuitement. Est-ce que c'est possible de me dire comment remédier à ça?
Merci beaucoup

Commentaire de lulupupuce le 17/06/2006 01:13:53

J'ai aussi un problème de telechargement!!
Mon ordinateur ne veut telecharger ausun fichier, le message suivant s'affiche:
le site n'est pas disponible ou n'a pas pu être trouver
Reessayer ultérieurrement!!
J'auraos vraiment besoin de vos ressource car cela fait un moment que je n'arrive pas a resoudre le problème!!
Meri de m'aider je vous en serait très reconaissante

Commentaire de formyjuju le 13/10/2006 11:53:58

Nikel ce code :)

Commentaire de bigsnoop le 09/02/2007 09:48:16

il marche bien ta JSP pour forcer le telechargement d'un fichier.
Mais le seul souci que j'ai avec, c'est que lorsque je télécharge mon fichier text, les deux premiere ligne du fichier sont vides ...
Alors que le meme fichier téléchargé sur le serveur ne commence pas par deux ligne vide !!!

Est ce que ca vous dit quelques choses cette anomalie?

Merci,

Commentaire de beniiito le 13/03/2007 17:19:06

comme dit Grand Spirou

Helas, milles fois helas... ! Quand je clique sur le lien, dans le navigateur, j'ai le fichier  downloadFile.jsp qui s'affiche en format texte (sous Firefox). IE me propose de télécharger le fichier jsp.

J'ai pourtant suivi tes instructions à la lettre ! moi je suis hébergé chez FREE, vous pensez que ça vient de chez eux?

Commentaire de paohlott le 13/03/2007 18:56:45

Bonjour Beniiito,
C'est normal que ça ne marche pas chez vous, car FREE ne reconnait que le langage PHP, il ne supporte pas le java ni les jsp. Il existe une astuce équivalente en PHP : en recherchant "forcer téléchargement php" dans Google, je tombe par exemple sur ce lien : http://www.destrucsaweb.com/ressources/phpmyannu/goto_45.php
Cordialement.

Commentaire de japz le 15/03/2007 12:09:14

Merci PAOHLOTT pour ce source qui fonctionne tres bien !!
Ca resouds un probleme bien ennnuyeux pour moi !
Claire

Commentaire de beniiito le 17/03/2007 15:22:35

je n'ai pas pu essayer cette semaine mais promis je donnerai des nouvelles

Commentaire de metourne le 11/05/2007 14:36:41

Bonjour a tous,
je me permet de remonter ce topic pour remercier paohlott car ce programme m'aide vraiment (vraiment vraiment) beaucoup.
Malheureusement mon erreur est la meme que grand spirou et beniiiito, sauf que le serveur sur lequel je suis ne prend ni le JSP ni le PHP.

J'aimerai savoir si tu savais comment mettre des modules pour permettre le fonctionnement de ces programmes, ou si il y a une autre solution pour le faire fonctionner?

Commentaire de fents le 26/06/2007 00:34:39

Bonjour,

En ayant testé le code, j'ai le résultat que ... c'est le fichier "downloadFile.jsp" qu'il télécharge. Il ne tient pas du tout en compte du nom de fichier que j'ai mis en paramètre.

Commentaire de paohlott le 26/06/2007 17:36:59

Bonjour FENTS,

Cette solution est faite pour les serveurs java/jsp. Ton problème arrive pour la simple raison que ton hébergeur n'est pas fait pour héberger du java et des jsp. Si ton hébergeur reconnait le php, alors utilise une solution équivalente en php (voir lien plus haut).

Commentaire de NomUtil le 12/10/2007 12:28:24 6/10

C'est exactement ce que je cherche à faire...

Malheureusement internet explorer me répond :
Etat HTTP 404 - /downloadFile.jsp
type Rapport d'état
message /downloadFile.jsp
description La ressource demandée (/downloadFile.jsp) n'est pas disponible.

Est-ce parce qu'un fichier jsp ((où j'ai : <a href="downloadFile.jsp?file=REQUEST_FORM.dot">Request form</a>)) ne peut pas appeler un autre fichier downloadFile.jsp situé dans le même répertoire, lequel renvoie à un serveur "http://machintruc.fr/repertoire/espace_client/" ?
PS j'utilise Tomcat

Commentaire de BraveLord le 17/01/2008 12:36:12

Bonjour,

En testant le code sur un serveur, et en affichant le path ('getPath()') de 'f' (de type File), le path "http://monSite.com/monFichier.xls" devient "http:\monSite.com\monFichier.xls".
En l'occurence, le code recherche un fichier sur le disque dur, plutôt qu'un fichier sur le web.
Et bien entendu, je ne connais pas le path du fichier sur le disque dur du serveur (juste le lien Internet qui mène au fichier).

Est-il possible de remédier à celà ?

D'avance, merci pour votre temps et vos réponses.

Raph'

Commentaire de BraveLord le 18/01/2008 10:49:22

Trouvé !
Il ne faut pas utiliser de "File".
Exemple pour un fichier Excel (xls) :

<%@ page import="java.io.*"%>
<%
response.setContentType ("unknown/unknown");

response.setHeader ("Content-Disposition", "attachment; filename=\"monFichier.xls\"");

InputStream in = config.getServletContext().getResourceAsStream("/monPremierRepertoire/monFichier.xls");

ServletOutputStream outs = response.getOutputStream();
try {
int bit = in.read();
while ((bit) >= 0) {
outs.write(bit);
       bit = in.read();
     }
    } catch (Exception e) {
         e.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
%>

J'espère que ça aidera.

Commentaire de hyphenx le 07/02/2008 15:48:13

Simple, efficace !

Commentaire de mazedu62 le 14/03/2008 15:38:19

<%@ page import="java.util.*,java.io.*"%><%

File f = new File ("http://s3.archive-host.com/membres/playlist/90636913221784611/Musiques_libres/Acoustique/" + request.getParameter("file") );


response.setContentType ("unknown/unknown");


response.setHeader ("Content-Disposition", "attachment; filename=\"Deschansons.mp3" + request.getParameter("file") + "\"");

InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();
try {
int bit = in.read();
while ((bit) >= 0) {
outs.write(bit);
       bit = in.read();
     }
    } catch (Exception e) {
         e.printStackTrace(System.out);
    }
    outs.flush();
    outs.close();
    in.close();
%>
voici le code que j'ai mis d'apres les instructions, mais il quand je lance le lien il me montre cette page de codes, pourquoi ?

voici le html :
<a href="http://www.xplois.fr/downloadFile.jsp?file=Deschansons.mp3">document</a>

Commentaire de puma67000 le 07/04/2009 15:25:25

ça marche pas du tous peux importe la modification apporter je télécharge tous le temps le fichier downloadFile.jsp.
c'est pas normal.
et une fois adapter à mon site une page d'ereur s'ouvre quand on le test.
quelqu'un aurai quelque chose qui fonctionnerai?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales