Aqui les dejo una version actualizada del código para java servlet de "file upload".
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"
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"
Se agregarán todas las librerias "commons file upload"
y se agregaran todas las librerias "commons IO"
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:
14. Buscar un archivo cualquiera, preferentemente .txt y subirlo... se verá la siguiente página:
15. Buscar el archivo "subido" en c:/nuevo.txt.
16. Fin.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx