Subir imagen de un formulario con un servlet
Publicado por Cynthia (7 intervenciones) el 23/10/2008 16:43:40
Quisiera sabe como subir una imagen (file) que esta incluida con otros objetos en un formulario (textbox, radios, checkbox, etc...) pero procesarlo (enviar el url a una base de datos) y enviarlo a almacenar en el servidor a través de un servlet.....utilizo la libreria commons-fileupload-1.2 y commons-io-1.3.2 pero no me funciona....si lo utilizo..no guarda en la bd la info de los demas objetos del formulario....alguien podria darme otra solucion o indicarme cual podria ser el error?
Utilizo este código en el servlet "subirImagen":
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out)
{
boolean resp=false;
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
if(isMultipart)
{
//Definimos Donde se guardaran los archivos y tamaño maximo
int tamañoMaximoArchivo = 1024*1024*4; //valor en bytes --> (4MB)
//String directorioDestino = "C:\SERVER";
String directorioDestino = "\DIRECTORIO\imagenes\almacenadas";
File directorio=new File(directorioDestino);
if(!(directorio.exists()))
{
directorio.mkdirs();
}
try
{
DiskFileUpload fu = new DiskFileUpload();
String nombreArch = null;
// ordenamos procesar los ficheros
List fileItems = fu.parseRequest(req);
if(fileItems.size()>0)
{
for(int i=0;i<fileItems.size();i++)
{
FileItem actual = (FileItem)fileItems.get(i);
if(actual.getName().compareTo("") != 0)
{
String fileName = actual.getName();
// construimos un objeto file para recuperar el trayecto completo
File fichero = new File(fileName);
nombreArch = fichero.getName();
depura("El nombre del fichero es " + fichero.getName());
// nos quedamos solo con el nombre y descartamos el path
fichero = new File(directorioDestino,obtenerSoloNombre(nombreArch));
// escribimos el fichero colgando del nuevo path
actual.write(fichero);
String fieldName = actual.getFieldName();
String contentType = actual.getContentType();
boolean isInMemory = actual.isInMemory();
long sizeInBytes = actual.getSize();
out.print("<p> fieldName --> " + fieldName);
out.print("<p> fileName --> " + fileName );
out.print("<p> contentType --> " + contentType );
out.print("<p> isInMemory --> " + isInMemory);
out.print("<p> sizeInBytes --> " + sizeInBytes);
out.print("<br/><br/><br/>");
if(!actual.getFieldName().isEmpty())
resp= true;
}
}
}
resp = false;
}
catch(Exception e)
{
depura("Error de Aplicacion " + e.getMessage());
resp=false;
}
}
return resp;
}
y en el jsp este form: <form ENCTYPE="multipart/form-data" method="POST" action="subirImagen">
Utilizo este código en el servlet "subirImagen":
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out)
{
boolean resp=false;
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
if(isMultipart)
{
//Definimos Donde se guardaran los archivos y tamaño maximo
int tamañoMaximoArchivo = 1024*1024*4; //valor en bytes --> (4MB)
//String directorioDestino = "C:\SERVER";
String directorioDestino = "\DIRECTORIO\imagenes\almacenadas";
File directorio=new File(directorioDestino);
if(!(directorio.exists()))
{
directorio.mkdirs();
}
try
{
DiskFileUpload fu = new DiskFileUpload();
String nombreArch = null;
// ordenamos procesar los ficheros
List fileItems = fu.parseRequest(req);
if(fileItems.size()>0)
{
for(int i=0;i<fileItems.size();i++)
{
FileItem actual = (FileItem)fileItems.get(i);
if(actual.getName().compareTo("") != 0)
{
String fileName = actual.getName();
// construimos un objeto file para recuperar el trayecto completo
File fichero = new File(fileName);
nombreArch = fichero.getName();
depura("El nombre del fichero es " + fichero.getName());
// nos quedamos solo con el nombre y descartamos el path
fichero = new File(directorioDestino,obtenerSoloNombre(nombreArch));
// escribimos el fichero colgando del nuevo path
actual.write(fichero);
String fieldName = actual.getFieldName();
String contentType = actual.getContentType();
boolean isInMemory = actual.isInMemory();
long sizeInBytes = actual.getSize();
out.print("<p> fieldName --> " + fieldName);
out.print("<p> fileName --> " + fileName );
out.print("<p> contentType --> " + contentType );
out.print("<p> isInMemory --> " + isInMemory);
out.print("<p> sizeInBytes --> " + sizeInBytes);
out.print("<br/><br/><br/>");
if(!actual.getFieldName().isEmpty())
resp= true;
}
}
}
resp = false;
}
catch(Exception e)
{
depura("Error de Aplicacion " + e.getMessage());
resp=false;
}
}
return resp;
}
y en el jsp este form: <form ENCTYPE="multipart/form-data" method="POST" action="subirImagen">
Valora esta pregunta


0