Servlet de telechargement
Résolu
kml1191
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
kml1191 Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
kml1191 Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai le code java suivant :
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream is= new FileInputStream("d:/fichier.mp3");
OutputStream os = response.getOutputStream();
response.setHeader("Content-Disposition","attachment;filename=fichier.mp3");
int count;
byte buf[] = new byte[4096];
while ((count = is.read(buf)) > -1)
os.write(buf, 0, count);
is.close();
os.close();
}
est ce que quelqu'un peux me commenter les lignes du code parce que je ne comprends pas tout
je sais que le code permet de telecharger le fichier "fichier.mp3 qui se trouve dans d:
ce qui m'interesse c'est de comprendre les lignes du code
j'ai le code java suivant :
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream is= new FileInputStream("d:/fichier.mp3");
OutputStream os = response.getOutputStream();
response.setHeader("Content-Disposition","attachment;filename=fichier.mp3");
int count;
byte buf[] = new byte[4096];
while ((count = is.read(buf)) > -1)
os.write(buf, 0, count);
is.close();
os.close();
}
est ce que quelqu'un peux me commenter les lignes du code parce que je ne comprends pas tout
je sais que le code permet de telecharger le fichier "fichier.mp3 qui se trouve dans d:
ce qui m'interesse c'est de comprendre les lignes du code
A voir également:
- Servlet de telechargement
- Site de telechargement - Accueil - Outils
- Dark world telechargement - Guide
- Téléchargement - Télécharger - Compression & Décompression
- Telechargement - Télécharger - Traitement de texte
- Adobe Reader - Télécharger - PDF
3 réponses
Bonsoir !
Pour résumer on ne fait que parcourir un fichier présent sur le serveur (ici fichier.mp3) afin de le copier bit-à-bit dans le flux de réponse, que l'on va envoyer au client.
Cordialement,
InputStream is= new FileInputStream("d:/fichier.mp3"); //on ouvre un flux d'entrée vers ce fichier parce qu'on va le parcourir pour le lire OutputStream os = response.getOutputStream(); //on déclare os comme flux de sortie et on lui affecte la réponse du serveur vers le client response.setHeader("Content-Disposition","attachment;filename=fichier.mp3"); //on informe le client (browser html) que ce qu'il va recevoir du serveur est un fichier qui s'appelle fichier.mp3 int count; byte buf[] = new byte[4096]; //Ici on déclare un buffer de 4Ko while ((count = is.read(buf)) > -1) { //la boucle s'arrête lorsqu'il n'y a plus de données à lire dans is //on lit 4Ko de données dans is, et on stocke ça dans notre buffer buf os.write(buf, 0, count); //on écrit notre buffer (donc nos 4Ko de données) dans notre response } is.close(); os.close(); //on ferme les 2 flux pour libérer de l'espace (et pour envoyer la response)
Pour résumer on ne fait que parcourir un fichier présent sur le serveur (ici fichier.mp3) afin de le copier bit-à-bit dans le flux de réponse, que l'on va envoyer au client.
Cordialement,
bonsoir
merci pour ta reponse c'est bien detaillé c'est exactement ce que je cherché
mais il reste une toute petite chose
response.setHeader("Content-Disposition","attachment;filename=fichier.mp3");
pour le fonctionnement merci 'est bien detaillé il y a jute une chose que je ne comprend pas encore
content-disposition et le attachement;
merci pour ta reponse c'est bien detaillé c'est exactement ce que je cherché
mais il reste une toute petite chose
response.setHeader("Content-Disposition","attachment;filename=fichier.mp3");
pour le fonctionnement merci 'est bien detaillé il y a jute une chose que je ne comprend pas encore
content-disposition et le attachement;
Le format des flux http n'est pas un standard spécifique à java.
Ici, on définit les headers de la response, en spécifiant certains paramètres. Regarde ici pour avoir la liste de tous les paramètres utilisables : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
Dans notre cas, on utilise Content-Disposition (d'après ce lien c'est une valeur obsolète d'ailleurs). Content-Disposition permet d'indiquer à ton browser que le flux que l'on reçoit ne doit pas être interprété comme une page web, mais qu'il doit ouvrir une fenêtre te permettant de le télécharger. C'est le rôle de attachment;filename=fichier.mp3 : le flux n'est pas une page mais un fichier joint, dont tu spécifies le nom (donc ton navigateur va l'utiliser pour afficher une fenêtre du style : "Firefox souhaite ouvrir le fichier fichier.mp3. Souhaitez-vous :
- l'ouvrir (avec un menu te permettant de choisir l'application)
- l'enregistrer (avec un bouton ouvrant une fenêtre te permettant de choisir la destination)
)
Pour compléter ta méthode, tu devrais par ailleurs renseigner le content-type dans le header afin de spécifier que tu envoies un fichier mp3 (ça permettra à ton navigateur de te proposer une application par défaut pour ouvrir ton flux).
Cordialement,
Ici, on définit les headers de la response, en spécifiant certains paramètres. Regarde ici pour avoir la liste de tous les paramètres utilisables : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
Dans notre cas, on utilise Content-Disposition (d'après ce lien c'est une valeur obsolète d'ailleurs). Content-Disposition permet d'indiquer à ton browser que le flux que l'on reçoit ne doit pas être interprété comme une page web, mais qu'il doit ouvrir une fenêtre te permettant de le télécharger. C'est le rôle de attachment;filename=fichier.mp3 : le flux n'est pas une page mais un fichier joint, dont tu spécifies le nom (donc ton navigateur va l'utiliser pour afficher une fenêtre du style : "Firefox souhaite ouvrir le fichier fichier.mp3. Souhaitez-vous :
- l'ouvrir (avec un menu te permettant de choisir l'application)
- l'enregistrer (avec un bouton ouvrant une fenêtre te permettant de choisir la destination)
)
Pour compléter ta méthode, tu devrais par ailleurs renseigner le content-type dans le header afin de spécifier que tu envoies un fichier mp3 (ça permettra à ton navigateur de te proposer une application par défaut pour ouvrir ton flux).
Cordialement,