package servlet;
import java.io.IOException;
import java.util.Hashtable;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javazoom.upload.MultipartFormDataRequest;
import javazoom.upload.UploadBean;
import javazoom.upload.UploadException;
import javazoom.upload.UploadFile;
@WebServlet("/ServletSubir")
public class ServletSubir extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletSubir() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* Declaramos MultipartFormDaaRequest por que un Request normal no trae los valores del input Text
* y tampoco trae la imagen.
*/
MultipartFormDataRequest mrequest = null;
RequestDispatcher dispatcher = null;
/**
* UploadBean es una libreria que se usa para poder llevar objetos al servidor en este caso
* la imagen.
*/
UploadBean upBean = null;
String nombres = null;
String apellidos = null;
String direccion = null;
String telefono = null;
String todo = null;
String imagen = null;
try{
/**
* Aqui estamos confirmando el MultipartFormDataRequest y le indicamos que recoga todo lo que
* nos esta mandando el index.
*/
mrequest= new MultipartFormDataRequest(request);
if (mrequest != null) {
todo = mrequest.getParameter("todo");
}
if ((todo != null) && (todo.equalsIgnoreCase("upload"))) {
/**
* Usamos un HashTable que es un directorio, se podria usar como una tabla pequeña.
* mrequest.getFiles() = recoger todos los archivos de la imagen.
*/
Hashtable files = mrequest.getFiles();
if ((files != null) && (!files.isEmpty())) {
/**
* si UploadBean sirve para que podamos subir al servidor objetos, entonces
* UploadFile sirve para poder subir Archivos al servidor.
*
* En este caso, al usar el comando GET, le estamos diciendo a lo que
* tenga dentro de sus parentecis se vaya al objeto file, pero como
* el objeto que obtenemos es de tipo Hashtable le colocamos un cast
* para que podamos recuperar la informacion si problemas.
*/
UploadFile file = (UploadFile) files.get("uploadfile");
upBean = new UploadBean();
upBean.setFolderstore("D:\\Imagenes\\");
/**
* Empezamos a utilizar el UploadBean y colocamos la opcion setFolderstore
* para poder indicar en que direcion vamos a guarda todo archivo que nos mande.
*/
upBean.store(mrequest, "uploadfile");
/**
* Con el Store le decimos al MultipartFormRequest que obtenta tambien la imagen.
*/
if (file != null) {
imagen = file.getFileName();
request.setAttribute("imagen", "D:\\Imagenes\\"+imagen);
request.setAttribute("nombre", imagen);
request.setAttribute("tipo",file.getContentType() );
request.setAttribute("tamanio", file.getFileSize());
}
} else {
System.out.println("<li>No uploaded files");
}
if (mrequest != null) {
/**
* Usamos el "mrequest" por que como dije al comienzo, el request normal no funciona
* cuando usamos un FORM MULTIPART / FORM-DATA
*/
nombres = mrequest.getParameter("txtNombres");
apellidos = mrequest.getParameter("txtApellidos");
direccion = mrequest.getParameter("txtDireccion");
telefono = mrequest.getParameter("txtTelefono");
}
request.setAttribute("txtNombres", nombres);
request.setAttribute("txtApellidos", apellidos);
request.setAttribute("txtDireccion", direccion);
request.setAttribute("txtTelefono",telefono);
dispatcher = getServletContext().getRequestDispatcher("/mensaje.jsp");
}
}catch( UploadException exc){
System.out.println("Error en lo primero: "+exc.getMessage());
}
dispatcher.forward(request, response);
}
}