Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escribir un programa JAVA que pueda implementar la función de descarga de archivos

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

<. /p>

doc

aplicación/vnd.ms-word

< /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

{

}

%>

2. Descargar usando la salida de flujo de archivos

1. archivo xml

p>

doc

aplicación/vnd.ms-word

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)

{

salida.write(b, 0, i);

}

salida.flush();

}

catch(Excepción e)

{

System.out.println("¡Error!");

e.printStackTrace();

}

finalmente

{

if(fis != null)

{