Caso: descarga de archivos

 

 

 

<! DOCTYPE html > 
< html lang = "en" > 
< cabeza > 
    < meta charset = "UTF-8" > 
    < título > Título </ título > 
</ cabeza > 
< cuerpo > 
< un href = "/ Día 15 / img / 1 .jpg" >图片1 </ una > 
< un href = "/ Día 15 / img / 2.jpg" >图片2 </ una > 
<
= "/ Día 15 / downloadServlet? filename = 1.jpg" >图片1 </ una > 
< un href = "/ Día 15 / downloadServlet? filename = 2.jpg" >图片2 </ una > 
</ cuerpo > 
</ html >

 

empaquetar cn.itcast.web; 

importación javax.servlet.ServletContext;
importación javax.servlet.ServletException;
importación javax.servlet.ServletOutputStream;
importación javax.servlet.annotation.WebServlet;
importación javax.servlet.http.HttpServlet;
importación javax.servlet.http.HttpServletRequest;
importación javax.servlet.http.HttpServletResponse;
importación java.io.FileInputStream;
importación java.io.IOException; 

/ ** 
 * @author 旗木五五开
 * @create 09/03/2020 una y cuarenta y cinco 
 * / 
@WebServlet ( "/ downloadServlet" )
 pública clase DownloadServlet la extiende el HttpServlet {
     protegida  vacío doPost (la solicitud de HttpServletRequest, la respuesta HttpServletResponse) lanza ServletException, IOException {
 //         1. Los parámetros de la petición de adquisición, el nombre del archivo 
        nombre de archivo de secuencia = request.getParameter ( "nombre de archivo" );
 //         2. Uso byte de entrada flujos en memoria
 //         2,1 localizar la ruta de servidor de archivos a 
        la ServletContext donde ServletContext = el este .getServletContext (); 
        cadena realpath = ServletContext.getRealPath ( "/ IMG /" + filename);
 //         asociada con el flujo de bytes 2.2 
        el FileInputStream FIS = nuevo nuevoEl FileInputStream (realpath); 

//         establece la respuesta de los respectivos cabezales
 @         adquiere archivo real de acuerdo nombre de archivo de tipo MIME 
        cadena mimeType = servletContext.getMimeType (filename);
 //         establecer el tipo de cabecera de respuesta MIME: Content-type 
        response.setHeader ( " escriba-Content "mimeType);
 //         set para abrir en respuesta a la primera forma de realización: Content-Disposition 
        / * archivo adjunto anexo 
        * nombre de archivo correspondiente a la descarga aviso del nombre caja 
        * * / 
        response.setHeader ( " Content-Disposition "" unión; nombre de archivo = "+ nombre de fichero); 

//         escribir los datos en el flujo de entrada 3. la secuencia de salida: las operaciones de archivo Duikao
 //         flujo de salida 3.1 archivo 
        ServletOutputStream sos =response.getOutputStream ();
 //         3.2 define una matriz de bytes, como un tampón de 
        byte [] = de BUFF nuevo nuevo  byte [1024 * 8. ];
 //         3,3 el número de lectura 
        int len = 0 ;
 //         3,4 ciclo de lectura , leer en la memoria intermedia 
        al mismo tiempo que ((len = (fis.read (piel de ante)))! = -1) { // no es igual a -1 descripción del archivo se ha leído hasta el final
 //               3,5 usando el flujo de salida, la salida de los datos de lectura 
            sos.write (piel de ante, 0, len); // flujo de bytes sin actualizar 
        }
 //         flujo de salida sin autorización, el flujo de entrada de cierre 
        fis.close (); 
    } 

    protegido  vacío doGet (HttpServletRequest la solicitud, la respuesta HttpServletResponse)lanza ServletException, IOException {
         este .doPost (petición y respuesta); 
    } 
}

 

 

 cuestión del nombre chino

get problema de la basura china en la solicitud de petición de obtención Tomcat8 se procesará automáticamente

<! DOCTYPE html > 
< html lang = "en" > 
< cabeza > 
    < meta charset = "UTF-8" > 
    < título > Título </ título > 
</ cabeza > 
< cuerpo > 
< un href = "/ Día 15 / img / 1 .jpg" >图片1 </ una > 
< un href = "/ Día 15 / img / 2.jpg" >图片2 </ una > 
<
= "/ Día 15 / downloadServlet? filename =九尾.jpg" >图片1 </ una > 
< un href = "/ Día 15 / downloadServlet? filename = 2.jpg" >图片2 </ una > 
</ cuerpo > 
</ html >

Firefox 

360

 

 

cuadro de mensaje pop-up no muestra la china normal, no es la misma en diferentes navegadores

resolver

 

Supongo que te gusta

Origin www.cnblogs.com/rijiyuelei/p/12446311.html
Recomendado
Clasificación