<! DOCTYPE html > < html lang = "fr" > < tête > < meta charset = "UTF-8" > < title > Titre </ title > </ tête > < body > < a href = "/ J15 / img / 1 .jpg » >图片1 </ a > < a href = "/ J15 / img / 2.jpg" >图片2 </ a > < = "/ J15 / downloadServlet? filename = 1.jpg" >图片1 </ a > < a href = "/ J15 / downloadServlet? filename = 2.jpg" >图片2 </ a > </ body > </ html >
emballer cn.itcast.web; importation javax.servlet.ServletContext; importation javax.servlet.ServletException; importation javax.servlet.ServletOutputStream; importation javax.servlet.annotation.WebServlet; importation javax.servlet.http.HttpServlet; importation javax.servlet.http.HttpServletRequest; importation javax.servlet.http.HttpServletResponse; importation java.io.FileInputStream; importation java.io.IOException; / ** * @author 旗木五五开 * @Create 09/03/2020 01h45 * / @WebServlet ( "/ downloadServlet" ) publique classe DownloadServlet l'étend la HttpServlet { protégée vide le doPost (HttpServletRequest demande, la réponse HttpServletResponse) lancers francs ServletException, IOException { // 1. Les paramètres de demande d'acquisition, le nom de fichier chaîne filename = request.getParameter ( "nom de fichier" ); // 2. Utilisez l' octet d'entrée les flux dans la mémoire // 2,1 localiser le chemin de serveur de fichiers à la ServletContext où ServletContext = la présente .getServletContext (); Chaîne realpath = ServletContext.getRealPath ( "/ IMG /" + filename); // associé au flux d'octets 2.2 le FileInputStream FIS = new newFileInputStream (realpath); // définir la réponse des têtes respectives @ acquiert fichier réel nom de fichier suivant type MIME chaîne mimeType = servletContext.getMimeType (nom de fichier); // définir le type d' en- tête de réponse MIME: Content-Type response.setHeader ( " par type de contenu "mimeType); // ensemble pour ouvrir en réponse au premier mode de réalisation: Content-Disposition / * attachement annexe * nom de fichier correspondant au nom de la boîte invite de téléchargement * * / response.setHeader ( " Content-Disposition "" fixation; filename = « + filename); // écrire les données dans le flux d'entrée 3. le courant de sortie: les opérations de fichier Duikao // 3,1 flux de sortie de fichier ServletOutputStream sos =response.getOutputStream (); // 3.2 définit un tableau d'octets de, en tant que tampon octet [] = BUFF nouveau nouvel octet [1024 * 8. ]; // 3,3 le nombre de lecture int len = 0 ; // 3,4 cycle de lecture , lu dans la mémoire tampon du tout ((len = (fis.read (BUFF)))! = 1) { // pas égal à -1 fichier de description ne soit pas lu jusqu'à la fin // 3,5 en utilisant le flux de sortie, la sortie des données de lecture sos.write (BUFF, 0, len); // flux d'octets sans rafraîchir } // flux de sortie sans jeu, le flux d'entrée pour fermer fis.close (); } protégé vide le doGet (HttpServletRequest la demande, la réponse HttpServletResponse)jette ServletException, IOException { cette .doPost (requête, réponse); } }
question du nom chinois
get problème des ordures chinois à la demande demande Tomcat8 get sera traitée automatiquement
<! DOCTYPE html > < html lang = "fr" > < tête > < meta charset = "UTF-8" > < title > Titre </ title > </ tête > < body > < a href = "/ J15 / img / 1 .jpg » >图片1 </ a > < a href = "/ J15 / img / 2.jpg" >图片2 </ a > < = "/ J15 / downloadServlet? filename =九尾.jpg" >图片1 </ a > < a href = "/ J15 / downloadServlet? filename = 2.jpg" >图片2 </ a > </ body > </ html >
Firefox
360
boîte de message pop-up ne montre pas les Chinois normale, pas les mêmes dans les différents navigateurs
résoudre