Colocaré los pasos exactos que yo segui para que el ejemplo funcione.
|
____________________________________________________________________________
En principio, utilice Netbeans 6 y tomcat 6 para este ejemplo.
1. Obterner la librería "Commons IO" (ver 1.4) de :
http://commons.apache.org/io/
2. Obtener la librería "commons file upload" (en este caso bajé la ver 1.2.1 de enero del 2008).
http://commons.apache.org/fileupload/
3. Ambas descomprimirlas en una carpeta "c:/librerias"
4. Crear un proyecto nuevo llamado "FileUpload"
1. Obterner la librería "Commons IO" (ver 1.4) de :
http://commons.apache.org/io/
2. Obtener la librería "commons file upload" (en este caso bajé la ver 1.2.1 de enero del 2008).
http://commons.apache.org/fileupload/
3. Ambas descomprimirlas en una carpeta "c:/librerias"
4. Crear un proyecto nuevo llamado "FileUpload"
Notar que se selecciono "Tomcat 6" como application server.
5. Crear un html nuevo llamado "uploadFile"
Colocar en el nuevo html el siguiente código:
<HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <center> <form method="POST" enctype='multipart/form-data' action="/FileUpload/UploadFichero"> Seleccione el archivo a enviar al servidor<br> <input type="file" name="fichero"> <input type="submit" value="Upload"> </form> </center> </BODY> </HTML> |
6. Agregar las librerias que se descomprimieron en el archivo "c:/librerias"
Todas las librerias deberían verse así en el entorno:
7. Se crea un nuevo paquete, llamado org.txos
8. Se crea un nuevo servlet llamado "UploadFichero"
9. Colocar el siguiente código en el servlet:
/* * UploadFichero.java * * Created on 27-06-2008, 11:22:00 AM * * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.txos; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.commons.fileupload.*; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.util.*; /** * * @author Os */ public class UploadFichero extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean ok = getNSaveFile(request); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); if (ok) { out.println("La transferencia del archivo fue exitosa."); } else { out.println("Fallo en transferencia de archivo."); } out.println(""); out.println(""); out.close(); } public boolean getNSaveFile(HttpServletRequest request) { try { // Chequea que sea un request multipart (que se este enviando un file) boolean isMultipart = ServletFileUpload.isMultipartContent(request); System.out.println("Is multipart=" + isMultipart); DiskFileItemFactory factory = new DiskFileItemFactory(); // maxima talla que sera guardada en memoria factory.setSizeThreshold(4096); // si se excede de la anterior talla, se ira guardando temporalmente, en la sgte direccion factory.setRepository(new File("d:/")); ServletFileUpload upload = new ServletFileUpload(factory); //maxima talla permisible (si se excede salta al catch) upload.setSizeMax(10000000); List fileItems = upload.parseRequest(request); //obtiene el file enviado Iterator i = fileItems.iterator(); FileItem fi = (FileItem) i.next(); //graba el file enviado en el servidor local //path y Nombre del archivo destino (en el server) String path = "c:/"; String fileName = "nuevo.txt"; fi.write(new File(path, fileName)); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); return false; } return true; } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /* * Handles the HTTP POST method. * @param request servlet request * @param response servlet response */ } |
10. Hacer "Build" al código del proyecto
11. Correrlo....
12. Se mostrará inicialmente el jsp.index, cambiar el path en el browser a:
13. Se deberá ver una página de este estilo:
15. Buscar el archivo "subido" en c:/nuevo.txt.
16. Fin.
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx