Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Java (Servlets y JSP) > enctype="multipart/form-data" input type=text upload files
-Foros de debate

Java (Servlets y JSP)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

enctype="multipart/form-data" input type=text upload files
Enviado por musa el día 2 de febrero de 2006

!Hola ¡

De un formulario de tipo enctype="multipart/form-data" , tengo que mandar dos valores a un servlet de upload de archivos. Uno de un iput type text y el archivo( el input type file).
Lo de subir el archivo al servidor ya lo he solucionado, el problema es que el valor del input type text siempre llega null. Mejor dicho cuando incluyó el input type text ya no funciona el upload y me marca null al llegar al servlet.
Sé que en este foro algunos compañeros ya han puesto solución a tal problema. Sin embargo en el sig código siempre me da null. Espero que alguien me pueda ilustrar con algun consejo ya que de plano ya llevo mucho tiempo en el problema:
El código que tengo es:
public class Upload extends HttpServlet {
void depura(String cadena)
{
System.out.println("El error es " + cadena);
}

public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
try
{
// Check that we have a file upload request
boolean isMultipart = FileUpload.isMultipartContent(req);
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = upload.parseRequest(req);

if(items == null)
{
depura("La lista es nula");
return false;
}

out.print("<br>El número de ficheros subidos es: " + items.size());
// Iteramos por cada fichero
Iterator i = items.iterator();
FileItem actual = null;
depura("estamos en la iteración");

while (i.hasNext())
{
actual = (FileItem)i.next();
if( actual.getFieldName().equals("ID") )
{

// Buscamos campos de formulario tipo text, input.
if (actual.isFormField())
{
// obtenemos el nombre del campo y su valor
String nombreCampo = actual.getFieldName();
System.out.println("NOM"+nombreCampo);
String valorCampo =actual.getString();
System.out.println("VAL"+valorCampo);


}
}

else
{

System.out.println("Estamos en el while");

String fileName = actual.getName();
out.println("<br>Nos han subido el fichero" + fileName);

// construimos un objeto file para recuperar el trayecto completo
File fichero = new File(fileName);
depura("El nombre del fichero es " + fichero.getName());

// nos quedamos solo con el nombre y descartamos el path
fichero = new File("C:\\Proyectos\\PRUEBAS\\" + fichero.getName());

// escribimos el fichero colgando del nuevo path
actual.write(fichero);
//}


}
}
}
catch (Exception e)
{
depura("Error de Aplicación " + e.getMessage());
return false;
}


return true;
}

 
Re: enctype="multipart/form-data" input type=text upload files
Enviado por Andrew el día 13 de febrero de 2006

Yo tengo justamente el mismo problema, el nombre del fichero viene null, si resuelves este problema por favor postealo aquí para que nos sirva a todos.
Gracias! :D

 
Re: Re: enctype=\
Enviado por Edwin el día 17 de marzo de 2006

Holas, aca tengo este codigo a mi me funciona, espero les sirva, favor escribanme si les sirvio.

DiskFileUpload fu = new DiskFileUpload();

//setSizeMax: Setea el maximo tamaño permitido para el archivo a cargar. Si es negativo, no hay maximo.
fu.setSizeMax( UConstante.MAX_FILE_UPLOAD_SIZE );
//setSizeThreshold: Setea el tamaño de threshold por medio del cual los archivos son escritos directamente a disco.
fu.setSizeThreshold( UConstante.SIZE_THRESHOLD );
//setRepositoryPath: Setea la ubicacion usada para guardar temporalmente archivos mas grandes que lo configurado como tamaño de threshold.
fu.setRepositoryPath(System.getProperty(\"java.io.tmpdir\"));
//parseRequest: Procesa un RFC 1867 compliant multipart/form-data stream.
List fileList = fu.parseRequest(request);


for (Iterator i = fileList.iterator(); i.hasNext(); )
{
FileItem fi = (FileItem)i.next();

if ( ! fi.isFormField() ) // es un archivo
{
if (fi.getSize() < 1 )
{
try{
throw new Exception(\"No se ha recibido ningun archivo (No file was uploaded) \");
}
catch(Exception e) {
String mensaje= \"Error\";
response.sendRedirect(\"../carga/cp_carga_archivo_formulario.jsp?mensaje=\" + mensaje);
return;
}
}
uploadedFileName = fi.getName();
uploadedFileStream = fi.getInputStream();

}
}//end for

 
Re: Re: Re: enctype=\\\\
Enviado por lagallinahaditqueno el día 20 de marzo de 2006

<?xml version=\\\"1.0\\\" encoding=\\\"ISO-8859-1\\\" ?>
<%@ page language=\\\"java\\\" contentType=\\\"text/html; charset=ISO-8859-1\\\" pageEncoding=\\\"ISO-8859-1\\\"%>
<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">
<%@ page import=\\\"eFirstSample.psisClientBridge\\\"%>
<%@ page import=\\\"org.apache.commons.fileupload.DiskFileUpload\\\"%>
<%@ page import=\\\"org.apache.commons.fileupload.FileItem\\\"%>
<%@ page import=\\\"java.util.List\\\"%>
<%@ page import=\\\"java.util.Iterator\\\"%>
<%@ page import=\\\"org.apache.commons.fileupload.DiskFileUpload\\\"%>
<%@ page import=\\\"org.apache.commons.fileupload.FileItem\\\"%>
<%@ page import=\\\"java.util.List\\\"%>
<%@ page import=\\\"java.util.Iterator\\\"%>
<%@ page import=\\\"java.io.File\\\"%>
<html>
<head>
<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=windows-1252\\\">
<title>Process File Upload</title>
</head>
<body>
<%
int parameters=0;
String xmldoc=\\\"\\\",cd=\\\"\\\";
System.out.println(\\\"Content Type =\\\"+request.getContentType());

DiskFileUpload fu = new DiskFileUpload();
// If file size exceeds, a FileUploadException will be thrown
fu.setSizeMax(1000000);

List fileItems = fu.parseRequest(request);
Iterator itr = fileItems.iterator();

while(itr.hasNext()) {
FileItem fi = (FileItem)itr.next();

//Check if not form field so as to only handle the file inputs
//else condition handles the submit button input
if(!fi.isFormField()) {
System.out.println(\\\"\\\\nNAME: \\\"+fi.getName());
System.out.println(\\\"SIZE: \\\"+fi.getSize());
System.out.println(fi.getOutputStream().toString());
File fNew= new File(application.getRealPath(\\\"/\\\"), fi.getName());

System.out.println(fNew.getAbsolutePath());
fi.write(fNew);
}
else {
System.out.println(\\\"Field =\\\"+fi.getFieldName()+\\\" Value =\\\"+fi.getString());
if (parameters==0)
{
xmldoc=fi.getString();
parameters++;
}
else
{
cd=fi.getString();
}
}
}
%>
<table border=\\\"0\\\" width=\\\"300\\\">
<TR><TD>XMLDOC: <TD><%=xmldoc%>
<TR>
<TD>CD:
<TD><%=cd%>
<TR><TD>Class: <TD>
<%psisClientBridge nh=new psisClientBridge(); %>
<%=nh.returnSomething()%>
</table>
Upload Successful!!
</body>
</html>

Con el filtro de no es un fichero se puede hacer, como en el ejemplo. Hay que usar la clase FileItem.isFormField de forma apropiada.
Funciona, testeado

 
Re: Re: Re: Re: enctype=\\\\
Enviado por narciso el día 18 de abril de 2006

Despues de deseperarme con el ServletFileUpload, no he conseguido que funcione la carga del fichero y el motivo es absolutamente desconocido para mi (no consigo interceptar ningún mesaje de error, simplemente no funciona).

Así que he probado con otra versión del jar (la 1.0) y esta funciona, pero no esta definida la clase ServletFileUpload. Por esto, hay que seguir el proceso descrito por Edwin, que en la siguiente versión (la 1.1) nos dirá "Deprecated. Use ServletFileUpload together with DiskFileItemFactory instead."

Espero que os sirva.

 
Re: Re: Re: Re: Re: enctype=\\\\
Enviado por miguel el día 6 de mayo de 2008

He encontrado otro foro que habla del tema y da una posible solución:

http://www.forosdelweb.com/f67/problema-con-enctyp...

De este modo se puede obtener el parametro desde java:
String nombreI2=String.valueOf(request.getParameter("imag enesFILE")).toString();

 
Re: Re: Re: Re: Re: Re: enctype=\\\\
Enviado por ima el día 11 de mayo de 2008

eso ultimo no funciona

 
Re: Re: Re: Re: Re: Re: Re: enctype=\\\\
Enviado por alex el día 21 de mayo de 2008

Que ejemplo de los aqui mencionados en el foro me ude servir para realiar la transferencia de archivos a un servidor que no e sd la empresa y que ya tengo la IP´s y accesos.

 
Re: Re: Re: Re: Re: Re: Re: Re: enctype=\\\\\\\\
Enviado por daniel el día 26 de junio de 2008

El problema es el enctype= multipart/form-data del formulario, el cual solo hace el envio del type=file. El problema radica en que la clase org.apache.commons.fileupload usada requiere que se utilice un fomulario de este tipo. Yo aun no he encontrado una sln.

 









Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network