Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/06/2012, 09:38
parakas14
 
Fecha de Ingreso: junio-2012
Ubicación: Paradas (Sevilla)
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: ¿subir un archivo con multipartRequest?

//ESTE SERVLET SIRVE PARA COGER LOS DATOS DE UN FORMULARIO RESPECTO A UN
//SEGUIMIENTO QUE SE HACE SOBRE VARIOS PRODUCTOS (CHECKBOXES) Y SUBIENDO
//UNA IMAGEN, LOS VALORES DE LOS CHECKBOXS, UN TÍTULO, DESCRIPCIÓN Y FECHA
//COMO ES LÓGICO, USANDO MULTIPARTREQUEST:
//LA IMAGEN LA GUARDO EN UNA CARPETA EN MI PROYECTO /Imagenes/Productos/nombre_archivo.

package servlets;


import Clases.Producto;
import Clases.Seguimiento;
import Persistencia.PersistenciaProducto;
import com.oreilly.servlet.MultipartRequest;
import java.io.*;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*
* @author JAVA
*/
public class nuevoSeg extends HttpServlet {


/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/

//private static final String TEMPORAL_DIR = "temp";
private static final String DESTINO_DIR = "Imagenes/productos";
//private File tmp;
private File des;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ParseException {



// declaración de variables a utilizar para la subida de los datos del formulario
String cabecera = null;
String contenido = null;
String[] lista = null;
String fecha =null;
String nombreArchivo = null;
int addSeguimiento=0;
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date fechaBUENA = null;
int tam;
String rutaArchivo=null;



// Compruebo si las carpetas existen y si no las creo
// ************************************************** **********
/*String ruta = getServletContext().getRealPath(TEMPORAL_DIR);
tmp = new File(ruta);
if (!tmp.exists()) {
tmp.mkdir();
}*/

String ruta = getServletContext().getRealPath(DESTINO_DIR);
des = new File(ruta);
if (!des.exists()) {
des.mkdir();
}



MultipartRequest mr = new MultipartRequest(request,ruta);
//Enumeration parametros = mr.getParameterNames();


contenido = mr.getParameter("contenido");
cabecera = mr.getParameter("cabecera");
//los valores de los checkboxes:
lista = mr.getParameterValues("productos");
fecha = mr.getParameter("fecha");


File f = mr.getFile("archivo");
String rutaReal = f.getPath();
String[] arrStr = rutaReal.split(new String("\\\\"));
String nombreA = arrStr[arrStr.length - 1];
File archivo = new File(des, nombreA);

rutaArchivo = DESTINO_DIR+"/"+nombreA;
boolean hecho = f.mkdir();



try {
fechaBUENA = df.parse(fecha.replace("/", "-"));
} catch (ParseException ex1) {
fecha = "";
}

if(fecha.equals("") || cabecera.equals("") || contenido.equals("") ) {
//faltan campos por rellenar
addSeguimiento = 3;
}
else {

// Guardamos los seguimientos para los productos incluidos en "lista" <-- los checkbox activos
for(int i=0;i<lista.length;i++)
{
Producto p = PersistenciaProducto.obtenerProducto(lista[i]);
Seguimiento seguimiento = new Seguimiento(p, cabecera, contenido, fechaBUENA, rutaArchivo);
addSeguimiento = PersistenciaProducto.insertarSeguimiento(seguimien to);
}


// INSERCION DEL ATRIBUTO Y REDIRECCION
request.setAttribute("insertado", addSeguimiento);
RequestDispatcher rd = request.getRequestDispatcher("addSeguimiento.jsp") ;
rd.forward(request, response);


}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (ParseException ex) {
Logger.getLogger(guardaSeg.class.getName()).log(Le vel.SEVERE, null, ex);
}
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (ParseException ex) {
Logger.getLogger(guardaSeg.class.getName()).log(Le vel.SEVERE, null, ex);
}
}


/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}