Programación en castellano
Inicio > Foros > Java (Servlets y JSP) > enctype="multipart/form-data" y campos tipo Text
-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" y campos tipo Text
Enviado por Liliana el día 9 de noviembre de 2005

Gracias de antemano por leer este mensaje
Estoy realizando un upload, esto ya lo tengo solucionado

y tengo lo siguiente:
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input name="tx" type="text" id="tx" value="">
<input type="file" name="file">
<input type="submit" name="Submit" value="Enviar">
</form>

El problema es que mientras tengo este campo no me permite copiar el archivo al servidor, cuando quito el campo tx, funciona correctamente.

y yo necesito tener el campo y leer el valor que se le introduce al campo tx, siempre me manda null, (leeo el valor del campo con lo siguiente:
String valor=request.getParameter("tx"); )
Si alguien me puede ayudar de que manera puedo hacerle para tener los dos tipos de campo juntos, que pueda copiar el archivo y ademas leer el valor,

Gracias por su ayuda

 
Re: enctype="multipart/form-data" y campos tipo Text
Enviado por malone el día 9 de noviembre de 2005

Yo para solucionar el problema utilce la utilerias de com.oreilly.servlet (cos.jar) la cual te proporciona que puedes ller campos de un formulario asi como subir el archivo, te proporciona la extencion el tamano etc.La puedes obtener de:
http://www.servlets.com/cos/

 
Re: Re: enctype="multipart/form-data" y campos tipo Text
Enviado por Vanesa el día 10 de noviembre de 2005

yo lo hago así:

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;

DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
byte[] data = item.get();
String fichero = new String(data);
}
Los parámetros del formulario del formulario los podrás coger como siempre:
tipo = (String) request.getParameter("tipo");

Espero te sirva de ayuda.
Un saludo

 
Re: Re: Re: enctype="multipart/form-data" y campos tipo Text
Enviado por Liliana el día 10 de noviembre de 2005

Gracias de antemano,Vanesa
pero ya lo intente de esa manera, pero el valor leído siempre me da null

 
Re: Re: Re: Re: enctype="multipart/form-data" y campos tipo Text
Enviado por Vanesa el día 11 de noviembre de 2005

Hola Liliana, mira he estado preguntando por ahí y me dicen lo mismo, una amiga me ha pasado su codigo que parece que está más "entero", recuerda que el parametro del fichero será un INPUT type="File" y los de tipo text envíalos tambien como INPUT no los pongas en el action del form, mandalo por POST. Comprueba que en el form hayas puesto enctype="multipart/form-data". Probablemente todo esto lo hayas mirado ya mil veces, pero muchas veces la "chorrada" más tonta es el problema.
Y en el servlet:
try {
// ------------------------ JAKARTA ----------------------
boolean isMultipart = FileUpload.isMultipartContent(request);
List parametrosMultiPart = null;
if (isMultipart == false)
throw new Exception("Los datos recibidos en la request no vienen correctos con formato multipart/form-data.");
DiskFileUpload upload = new DiskFileUpload();
parametrosMultiPart = upload.parseRequest(request);
//Buscamos los parametros. idEstado y idTransacion
Iterator itr = parametrosMultiPart.iterator();
tablaParametros = new Hashtable();
ficheroAdjunto =null;
while (itr.hasNext()) {
FileItem item = (DefaultFileItem) itr.next();
// Buscamos campos de formulario tipo text, input.
if (item.isFormField()) {
// obtenemos el nombre del campo y sy valor
String nombreCampo = item.getFieldName();
String valorCampo = item.getString();

//fin campo text
} else {
//case file
//Objeto que guardara el fichero para ser utilizado más adelante
ficheroAdjunto = new Fichero((DefaultFileItem)item);


}

Espero que de veras te sirva de ayuda.
Un saludo

 
enctype=\
Enviado por Liliana el día 11 de noviembre de 2005

Mil Gracias Venesa, con lo que me enviaste ya pude solucionar mi problema.

 
Re: enctype=\
Enviado por Jorge el día 13 de noviembre de 2005

Buenas tardes,

Estoy intentando hacer un upload de un fichero y eh intentado utilizar el codigo que aqui decis, pero no se como declarar
ficheroAdjunto = new Fichero((DefaultFileItem)item);
para que lo reconozca.
Probe con File pero no vale.
Como debo hacer?
Gracias

 

Re: enctype=\
Enviado por Bladys el día 24 de noviembre de 2005

Me gustaria me puedas ayudar en la solucion de tu problema pùes no puedo capturar los otros datos de mi formulario y solo tengo el archivo.. si me respondes a mi email te lo agradecere.. bladys@comteco.com.bo

 
Re: Re: enctype=\
Enviado por Begoña el día 25 de enero de 2006

Hola yo tengo un problema con algo parecido.

Tengo el código siguiente dentro de un mismo servlet pero cuando lo ejecuto no recibo como valor del contentType multipart/form-data sino que sigue teniendo el valor application/x-www-form-urlencoded

El valor del campo ACTION es el nombre del mismo servlet en el que tengo el código que anexo ¿sabeis cual puede ser el problema?

Gracias por adelantado

El código es el siguiente: y el error lo da al llamar a
List fileItems = fu.parseRequest(request);

indicando "the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded"



if (request.getContentLength() <= 1)
{
out.println("<form ACTION=\"cargaDatosSyn\" enctype=\"multipart/form-data\" method=post >");
out.println(" <input type=file name=" + fileArgName +">");
out.println(" <input type=submit value=\"Enviar Fichero\">");
out.println("</form>");
}
else
{
contentType = request.getContentType();
boundary = contentType.substring(contentType.indexOf("boundary=")+13); //antes ponia 9

if ((contentType != null) && (contentType.indexOf("application/x-www-form-urlencoded") != -1))
{
out.println("ha entrado<p>");
out.println("request.getMethod():"+request.getMethod()+"<p>");
out.println("request.getContentType():"+request.getContentType()+"<p>");
try
{
DiskFileUpload fu = new DiskFileUpload();

// maximo numero de bytes
fu.setSizeMax(1024*512); // 512 K

// tamao por encima del cual los ficheros son escritos directamente en disco
fu.setSizeThreshold(4096);

// directorio en el que se escribirn los ficheros con tamao superior al soportado en memoria
fu.setRepositoryPath("/tmp");

// ordenamos procesar los ficheros

List fileItems = fu.parseRequest(request);

if(fileItems == null)
{
out.println("El numero de ficheros subidos es null<p>");
}
out.print("<br>El nmero de ficheros subidos es: " + fileItems.size());
// Iteramos por cada fichero
Iterator j = fileItems.iterator();
FileItem actual = null;
while (j.hasNext())
{
actual = (FileItem)j.next();
String fileName = actual.getName();

//String namefile = request.getParameter("fichero");
out.println("el nombre del fichero es : "+ fileName + "<p>");
}
}
}

 
enctype=\
Enviado por musa el día 26 de enero de 2006

Hola a todos!! Me gustaría ayudar a todos, sin embargo en esto soy principiante y me atrevo a plantarles mi problema tambien.
Necesito copiar a un directorio en el servidor, los archivos que el usuario seleccione de un input type file:
<form name="cap_escuela" action="Upload" method="post" enctype="multipart/form-data" >
<input name="escudo" type="file" size="40" >
</input>
</form>
donde Upload es el siguinete servlet:
public class Upload extends HttpServlet {

/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

System.out.println("Estoy en proccessRequest");
int maxInt = 20; // megas
try{
// Obtener el archivo
String dirName = "C:\\Proyectos\\EVALDOC_SUP_ADM\\PRUEBAS";

if (dirName == null) {
//throw new HTMLActionException( "No es valido el directorio", "" );
}
File dirFile = new File(dirName);
if (! dirFile.isDirectory()) {
//throw new HTMLActionException( "No es valido el directorio: " + dirName ,excepcion );
}

MultipartRequest multi = new MultipartRequest(request, dirName, 1024 *1024*1024," ISO-8859-1", new Upload.RenameFile());



Enumeration e = multi.getFileNames();

for(; e.hasMoreElements();){


String nombre = (String) e.nextElement();

File file = multi.getFile(nombre);

// Crear el input Stream

FileInputStream fis = new FileInputStream(file);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

while(fis.available()>0){

baos.write(fis.read());

}

// forocenac.DBHelper.storeImage(baos.toByteArray());

}

//DefaultFileRenamePolicy df = new DefaultFileRenamePolicy();
//df.rename(f)



}

catch(IOException ioe){
System.out.println("Hay un error al escribir el archivo" );
ioe.printStackTrace();
//throw new HTMLActionException("El archivo excede la capacidad permitida",excepcion);
}




}

public class RenameFile extends DefaultFileRenamePolicy{

public File rename(File f){

try{

String name = f.getName();
StringBuffer sb = new StringBuffer();
for(int i=0; i < name.length(); i++){
char c =name.charAt(i);
if( ( ('A'<=c) && (c<='Z') ) ||
( ('a'<=c) && (c<='z') ) ||
( ('0'<=c) && (c<='9') ) ||
('_'==c) || (c=='.') )

sb.append( c );
else
sb.append("0");
}
//System.out.println("Nombre:" + sb.toString());
File aux = new File( f.getParent(), sb.toString());

if(f.renameTo( aux ) )
System.out.println("Error al renombrar el archivo");
// System.out.println("Nombre:" + f.getName());
f = super.rename(aux);
//System.out.println("Nombre:" + f.getName());
}catch(Exception e){System.out.println("Error al renombrar el archivo" + e);}
return f;
}
}


// <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
*/


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Estoy en Upload");
processRequest(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}
El problema es que no hace nada y ya estoy preocupada por que no queda.. Les AGRADEZCO POR SU ATENCION!! SUERTE A TODOS!!






 








Re: enctype="multipart/form-data" y campos tipo Text
Enviado por lesancor el día 20 de abril de 2006

asdasdasd

 


Tienda
Patrocinados
 

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

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados