import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.FilenameUtils;
import java.util.*;
import java.io.File;
import java.lang.Exception;
public class servletCargarFichero extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("application/vnd.wap.xhtml+xml");
response.setContentType("text/html");
out.println("<html>");
out.println("<head>");
out.println("<title>Prueba</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Datos recibidos en el servidor</h1>");
out.println("<hr/>");
out.println("<p>");
/* Miramos si la petición HTTP está codificada en formato multiparte.
Esto es para que lea los parametros y el fichero a la vez. */
try{
if (ServletFileUpload.isMultipartContent(request)){
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
/* Al ser multiparte, con servletFileUpload.parseRequest(request) recibimos una lista de FileItem. */
List fileItemsList = servletFileUpload.parseRequest(request);
String optionalFileName = "";
/* FileItem es un campo simple, del tipo nombre-valor*/
FileItem fileItem = null;
Iterator it = fileItemsList.iterator();
String fieldName=null;
String value=null;
while (it.hasNext()){
FileItem fileItemTemp = (FileItem)it.next();
if (fileItemTemp.isFormField()){
fieldName=fileItemTemp.getFieldName();
value=fileItemTemp.getString();
if (fileItemTemp.getFieldName().equals("filename"))
optionalFileName = fileItemTemp.getString();
}
else
fileItem = fileItemTemp;
}
if (fileItem!=null){
// Nombre del archivo a cargar
String fileName = fileItem.getName();
out.println("<b>Info del fichero cargado:</b><br/>");
/*Nos dice el tipo de fichero. Ej.: .jpg (image/jpge), .txt (text/plain) ...)*/
out.println("Tipo de fichero: "+fileItem.getContentType()+"<br/>");
out.println("Nombre del campo: "+fileItem.getFieldName()+"<br/>");
out.println("Nombre del fichero: "+fileName+"<br/>");
out.println("Tamaño del fichero: "+fileItem.getSize()+"<br/><br/>");
/* Guardar el fichero cargado si su tamaño es mayor que 0. */
if (fileItem.getSize() > 0){
if (optionalFileName.trim().equals(""))
fileName = FilenameUtils.getName(fileName);
else
fileName = optionalFileName;
String dirName = "/img/fotos/";
File saveTo = new File(dirName + fileName);
out.println("GUARDADO EN: <b>"+saveTo+"</b>");
try {
fileItem.write(saveTo);
out.println("<b>El fichero cargado se ha guardado correctamente.</b>");
} //try
catch (Exception e){
out.println("<br/>"+e.getMessage()+"<br/><br/>");
out.println("<b>Ha ocurrido un error cuando intentábamos guardar el fichero cargado.</b>");
}
} // if
} // if
} // while
} //try
catch(Exception e)
{
}
out.println("</p>");
out.println("</body>");
out.println("</html>");
}
}