Cómo escribir un programa JAVA que pueda implementar la función de descarga de archivos
Java implementa la descarga de archivos
1. Utilice el método RequestDispatcher
1. Agregue el archivo web.xml
< /mime- mapeo> 2. El programa es el siguiente: <%@page language="java" import="java.net.*" pageEncoding="gb2312"%> <% response.setContentType("application/x-download");//Establecer para descargar application/x-download String filenamedownload = "/ Systemsolution.doc";//La ruta relativa del archivo que se descargará String filenamedisplay = "Systemsolution.doc";//El nombre para guardar el archivo que se muestra al descargar el archivo filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8"); respuesta.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); intente { RequestDispatcher despachador = application.getRequestDispatcher(archivodescargar); if(dispatcher != null) { p> despachador.forward(solicitud,respuesta); } respuesta.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finalmente p> { } %> 2. Descargar usando la salida de flujo de archivos 1. archivo xml
2. El procedimiento es el siguiente:
<%@page language="java" contentType="aplicación/x-msdow
nload" import="java.io.*,java.net.*" pageEncoding="gb2312"%>
<%
//Acerca del uso de la salida de flujo de archivos al descargar archivos Método de procesamiento:
//Agregue respuesta.reset() y no rompa las líneas después de %>, incluida la última
//Porque Application Server está procesando el compilado; jsp El contenido entre %> y <% generalmente se genera como está, y el valor predeterminado es PrintWriter,
//Pero desea realizar una salida de flujo: ServletOutputStream, que equivale a intentar usar dos en Tipo de mecanismo de salida de servlet,
//Se producirá un error: getOutputStream() ya ha sido llamado para esta respuesta
//Para más detalles, consulte el Capítulo 1 del libro " Más Java Pitfill" Parte Dos Capa Web Elemento 33: Intentar usar dos mecanismos de salida en Servlet 270
//Y si hay un salto de línea, no hay problema para archivos de texto, pero para otros formatos, como AutoCAD, Word, Excel, etc. Archivo
//Habrá algunos saltos de línea adicionales 0x0d y 0 en el archivo descargado, lo que puede provocar que los archivos en algunos formatos no se puedan abrir, mientras que algunos se pueden abrir normalmente.
respuesta.reset();//Se puede agregar o no agregar
respuesta.setContentType("application/x-download");//Establecer para descargar la aplicación/x- descargar
// /../../ Retroceda dos niveles hasta WEB-INF/classes y vaya al directorio raíz de la aplicación. Tenga en cuenta que las rutas obtenidas en la siguiente oración son diferentes entre Tomcat. y WebLogic No hay / al final de la ruta en WebLogic
System.out.println(this.getClass().getClassLoader().getResource("/").getPath()). ;
String filenamedownload = this.getClass() .getClassLoader().getResource("/").getPath() + "/../../System Solution.doc";
String filenamedisplay = "System Solution.doc";/ /System solucion.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
respuesta. addHeader("Content-Disposition","attachment;filename= " + filenamedisplay);
OutputStream salida = null;
FileInputStream fis = null;
intentar
{
salida = respuesta.getOutputStream();
fis = new FileInputStream(archivodescargar);
byte[] b = nuevo byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{ p>
salida.write(b, 0, i);
}
salida.flush();
}
catch(Excepción e)
{
System.out.println("¡Error!");
e.printStackTrace();
}
finalmente
{
if(fis != null)
{