Carga de archivos JSP & Ejemplos de programas de descarga de archivos

En este ejemplo, aprenderemos cómo cargar y descargar un archivo a través de JSP.

La salida de entrada de archivos son operaciones muy importantes. Aquí vamos a leer y escribir un archivo usando JSP.

Carga de archivos JSP

  • Podemos cargar cualquier archivo usando JSP.
  • Puede ser un archivo de texto, archivo binario, archivo de imagen o cualquier otro documento.
  • Aquí, en caso de carga de archivos, solo se utilizará el método POST y no el método GET.
  • El atributo Enctype debe establecerse en multipart / form-data.

Ejemplo: uso de acción

En este ejemplo, estamos cargando un archivo usando un objeto IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Archivo Guru  Carga de archivos de Guru: Seleccionar archivo:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%> Carga de archivos de Guru <%Archivo de archivo;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = nuevo DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nuevo archivo ("c: \\ temp"));ServletFileUpload upload = nuevo ServletFileUpload (fábrica);upload.setSizeMax (maxFileSize);tratar{List fileItems = upload.parseRequest (solicitud);Iterador i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();booleano isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (archivo);out.println ("Nombre de archivo cargado: + ruta de archivo + nombre de archivo + "
");}}out.println ("");out.println ("");} captura (Excepción ex) {System.out.println (ex);}}demás{out.println ("");out.println ("");out.println ("

No se ha subido ningún archivo

");out.println ("");out.println ("");}%>

Explicación del código:

Action_file.jsp

Línea de código 12-18: aquí estamos creando un formulario con campo de archivo, que cargará el archivo al servidor y la acción se pasará a action_file_upload.jsp

Action_file_upload.jsp

Línea de código 20: aquí le damos la ruta del archivo a una ruta en particular

Línea de código 23-38: aquí verificamos si el tipo de contenido es multipart / form-data. Si ese es el caso, entonces el contenido es del tipo de archivo y se lee. Después de leer el archivo, se escribe en el archivo temporal y luego el archivo temporal se convierte en el archivo principal.

Cuando ejecuta el código anterior, obtiene el siguiente resultado

Producción:

Estamos cargando el archivo usando la opción de botón de elegir archivo y el botón de carga de archivo cargará el archivo al servidor en la ruta que se proporciona.

Ejemplo: uso de operaciones JSP

En este ejemplo, vamos a cargar un archivo usando operaciones JSP.

Tomaremos un formulario que tendrá el botón "cargar" y cuando haga clic en el botón cargar, se cargará el archivo.

Uploading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru subiendo archivo Archivo:

Explicación del código:

Línea de código 11-12: Aquí estamos tomando un formulario que tiene acción en el servlet guru_upload que pasará a través de un método POST. Además, aquí enctype ie atributo que especifica cómo se deben codificar y enviar los datos del formulario al servidor y solo se usa con el método POST. Aquí estamos configurando como multipart / form-data que es para el archivo (ya que los datos serán grandes).

Línea de código 13: Aquí estamos especificando el elemento guru_file con el tipo de archivo y dando un tamaño de 50.

Línea de código 15: Este es un botón de tipo de envío con el nombre "Subir" a través del cual se llamará al servlet de acción y la solicitud se procesará en ese y el archivo se leerá y se escribirá en el servlet.

Guru_upload.java

paquete demotest;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload extiende HttpServlet {private static final long serialVersionUID = 1L;public guru_upload () {súper();// TODO stub de constructor generado automáticamente}protected void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse) lanza ServletException, IOException {if (ServletFileUpload.isMultipartContent (solicitud)) {tratar {List  multiparts = new ServletFileUpload (nuevo DiskFileItemFactory ()). ParseRequest (solicitud);para (elemento FileItem: multiparts) {if (! item.isFormField ()) {Nombre de cadena = nuevo archivo (item.getName ()). GetName ();item.write (nuevo archivo ("c: / guru / upload" + File.separator + nombre));}}//El archivo ha subido correctamenterequest.setAttribute ("gurumessage", "Archivo subido correctamente");} captura (Excepción ex) {request.setAttribute ("gurumessage", "Error al cargar archivo debido a" + ex);}}demás{request.setAttribute ("gurumessage", "No se encontró archivo");}request.getRequestDispatcher ("/ result.jsp"). adelante (solicitud, respuesta);}}

Explicación del código:

Línea de código 12-14: Aquí tendremos que importar la biblioteca org.apache.commons a la configuración del código. Tendremos que importar la clase fileupload de la biblioteca org.apache.commons.

Línea de código 23: Aquí tenemos el método doPost (), que se llamará cuando pasamos el método POST en JSP y solicitará y responderá objetos como sus parámetros

Línea de código 26: Aquí estamos creando un objeto de la clase ServletFileUpload desde el paquete fileUpload de la biblioteca org.apache.commons que verificará si hay objetos de archivo en JSP. Si se encuentra alguno, ese objeto de archivo se tomará de la solicitud.

Línea de código 27-32: iteraremos el número de archivos comprobando cuántos elementos de archivo están presentes en el objeto de varias partes, que es un objeto de lista (si cargamos más de un archivo) y lo guardaremos en la carpeta c: / guru / upload con el nombre de archivo que se ha proporcionado. Estamos escribiendo el archivo usando el método de escritura del objeto de archivo en la carpeta que se ha mencionado.

Línea de código 34: Si no hay una excepción, estamos configurando el atributo en la solicitud como gurumessage con el valor "Archivo cargado correctamente".

Línea de código 35-36: si se produce una excepción, establezca el mensaje "Error al cargar el archivo"

Línea de código 40: si no se encuentra el archivo, establezca el mensaje como "No se encontró archivo"

Línea de código 42: solicitud de reenvío mediante el objeto requestdispatcher a result.jsp con objetos de solicitud y respuesta.

Result.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Resultado de Guru <% String msg = (String) request.getAttribute ("mensaje");out.println (mensaje);%>

Explicación del código:

Línea de código 10: Aquí obtenemos el atributo del objeto de solicitud con el valor gurumessage en un objeto de cadena.

Línea de código 11: Aquí estamos imprimiendo ese mensaje.

Cuando ejecutamos el código anterior obtenemos el siguiente resultado

Producción:

Obtenemos un formulario en el que hay campos para elegir un archivo del directorio. Una vez seleccionado el archivo, tenemos que hacer clic en el botón de carga.

Una vez que se hace clic en el botón de carga, obtenemos el mensaje de que el archivo se cargó correctamente.

En el siguiente diagrama, podemos ver que el archivo se cargó en la carpeta c: / guru / upload.

Descargando archivo:

En este ejemplo, vamos a descargar un archivo de un directorio haciendo clic en el botón.

Descargando_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Ejemplo de descarga de Guru Archivo de descarga de Guru  ¡Descárgalo aquí! 

Explicación del código:

Línea de código 10: Aquí hemos proporcionado un enlace para descargar un archivo de la carpeta c: / guru / upload usando servlet guru_download.

Guru_download.java

paquete demotest;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Clase de implementación de servlet guru_download* /public class guru_download extiende HttpServlet {private static final long serialVersionUID = 1L;protected void doGet (solicitud HttpServletRequest, respuesta HttpServletResponse) lanza ServletException, IOException {response.setContentType ("texto / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APLICACIÓN / OCTETO-FLUJO");response.setHeader ("Content-Disposition", "adjunto; nombre de archivo = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nuevo FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (solicitud HttpServletRequest, respuesta HttpServletResponse)* /protected void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse) lanza ServletException, IOException {// TODO código auxiliar de método generado automáticamente}}

Explicación del código:

Línea de código 3-5: aquí estamos importando FileInputStream, IO Exception y PrintWriter desde el paquete java.io.

Línea de código 15: Estamos definiendo el servlet guru_download que extiende HttpServlet.

Línea de código 18: como hemos definido un href, que se incluirá en la URL, por lo que se procesará el método GET (se llamará a doGet en el servlet) que también incluye los objetos de solicitud y respuesta.

Línea de código 19-20: estamos configurando el tipo de contenido en el objeto de respuesta y también obtenemos el objeto del escritor de la respuesta.

Línea de código 21-22: Definición de una variable como gurufile como valor test.txt y gurupath como c: / guru / upload /

Línea de código 23-25: Estamos configurando el tipo de contenido usando el objeto de respuesta y usamos el método setHeader que establece el encabezado en el objeto de respuesta como el nombre de archivo que se ha cargado.

Línea de código 27-28: Estamos creando FileInputStream en el que agregaremos gurupath + gurufile.

Línea de código 31-33: Aquí hemos tomado un ciclo while que se ejecutará hasta que se lea el archivo, por lo tanto, hemos dado la condición! = -1. En esta condición, estamos escribiendo usando el objeto printwriter out.

Cuando ejecute el código anterior obtendrá el siguiente resultado

Producción:

Producción:

Tenemos que hacer clic en downloading_1.jsp y obtendremos un hipervínculo como "Descargar aquí". Cuando haga clic en este archivo de hipervínculo, se descargará en el sistema.

Resumen:

  • Hemos aprendido sobre el formulario de registro para registrarnos en cualquier aplicación.
  • Aprendió más sobre cómo funcionan los formularios de inicio y cierre de sesión.
  • También aprendí sobre la carga y descarga de un archivo a través de JSP.

Articulos interesantes...