package packGuarderia;
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>");}
}