Foros del Web » Programando para Internet » Javascript »

Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

Estas en el tema de Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE en el foro de Javascript en Foros del Web. Hola, necesito obtener un objeto de tipo File a partir de un campo de un formulario de tipo file. El siguiente código me funciona en ...
  #1 (permalink)  
Antiguo 29/04/2012, 10:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Pregunta Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

Hola,

necesito obtener un objeto de tipo File a partir de un campo de un formulario de tipo file.

El siguiente código me funciona en todos los navegadores menos en IE

Código:
	
var files = new Array();
var nFiles = 0;
$.each($(this).find("#ficheros").find('input'),
function(j, fileInput)
{	
							
         for (var i = 0; i < fileInput.files.length; i++) 
	{
		files[nFiles] = fileInput.files[i];
		nFiles++;
	}
}
);
El problema es que en IE no reconoce la propiedad files del campo del formulario.
¿Cómo puedo obtener el objeto File en IE?
Gracias
  #2 (permalink)  
Antiguo 29/04/2012, 11:58
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

IE y Opera no soportan File, podés usar el valor de value para obtener el path

Ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.     <script type="text/javascript">
  7.         function infoArchivo() {
  8.             var fileInput = document.getElementById ("subir");
  9.  
  10.             var mensajes = "";
  11.             if ('files' in fileInput) {
  12.                 if (fileInput.files.length == 0) {
  13.                     mensajes = "Seleccione sus archivos<br />Use Ctrl para selecciones múltiples(firefox/chrome/Safari)..";
  14.                 } else {
  15.                     for (var i = 0; i < fileInput.files.length; i++) {
  16.                        mensajes += "<br /><b>" + (i+1) + ". seleccionado</b><br />";
  17.                         var file = fileInput.files[i];
  18.                         if ('name' in file) {
  19.                             mensajes += "nombre: " + file.name + "<br />";
  20.                         }
  21.                         else {
  22.                             mensajes += "nombre: " + file.fileName + "<br />";
  23.                         }
  24.                         if ('size' in file) {
  25.                             mensajes += "tamaño: " + file.size + " bytes <br />";
  26.                         }
  27.                         else {
  28.                             mensajes += "tamaño: " + file.fileSize + " bytes <br />";
  29.                         }
  30.                         if ('mediaType' in file) {
  31.                             mensajes += "tipo: " + file.mediaType + "<br />";
  32.                         }
  33.                     }
  34.                 }
  35.             }
  36.             else {
  37.                 if (fileInput.value == "") {
  38.                     mensajes += "Seleccione uno o más archivos.";
  39.                     mensajes += "<br />Use Ctrl para selecciones múltiples(firefox/chrome/Safari).";
  40.                 }
  41.                 else {
  42.                     mensajes += "El navegador no soporta el objeto File";
  43.                     mensajes += "<br />La ruta al archivo seleccionado es: " + fileInput.value;
  44.                 }
  45.             }
  46.  
  47.             var info = document.getElementById ("info");
  48.             info.innerHTML = mensajes;
  49.         }
  50.     </script>
  51. </head>
  52. <body onload="infoArchivo()">
  53.     <input type="file" id="subir" multiple="multiple" size="60" onchange="infoArchivo()" />
  54.     <div id="info" style="margin-top:30px"></div>
  55. </body>
  56. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 29/04/2012, 12:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

En ese ejemplo solo se muestran las propiedades del fichero seleccionado pero si quiero enviar el archivo mediante una petición AJAX, ¿como podría adjuntarlo al formulario?

Necesito enviar el fichero, está claro que con un submit normal del formulario se enviaría, pero necesito hacer la petición mediante ajax :S

Gracias
  #4 (permalink)  
Antiguo 29/04/2012, 12:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

Si el objeto es subir un archivo sin recargar la página, podés hacer esto
http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ (plugin de jquery)
ó esto (bastante más simple utilizando un iframe oculto, de ajax no tiene nada)
http://www.ajaxf1.com/product/ajax-file-upload.html


SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 29/04/2012, 13:07
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

Había visto que existían plug-ins pero no prefería utilizar jquery nativo si se pudiera.

Le echaré un ojo a eso para hacerlo.

Muchas Gracias!
  #6 (permalink)  
Antiguo 29/04/2012, 14:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

como estás usando cosas como
$.each($(this).find("#ficheros").find('input'),

...
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 29/04/2012, 14:42
 
Fecha de Ingreso: agosto-2010
Mensajes: 128
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Obtener objeto "File" desde un campo de tipo "file" de un formulario en IE

¿Es una pregunta?

Es que tengo un dialogo jquery ui en el que el usuario puede añadir mas campos de selección de archivos dinámicamente al formulario, y todos se añaden con el mismo código. De ese modo proceso todos los campos que el usuario haya ido creando y subo todos los ficheros a la vez.

Un saludo

Etiquetas: explorer, file, internet, type, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:22.