Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/09/2014, 13:52
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: subir archivo con form data

Eso sucede porque no estás usando correctamente al objeto FormData. Puedes crear al objeto sin pasarle un argumento y luego recorres al conjunto de elementos del formulario para añadírselos uno por uno o los añades a todos de una sola vez.

Esta es una forma básica de hacerlo:
Código Javascript:
Ver original
  1. var formulario = $("#formNuevoBoletin"),
  2.     elementos = formulario.elements,
  3.     total = elementos.length,
  4.     formData = new FormData();
  5.  
  6. for (var i = 0; i < total; i++){
  7.     if (elementos[i].type == "file"){
  8.         var archivo = elementos[i].files;
  9.         formData.append(elementos[i].name, archivo[0]);
  10.     }
  11.     else{
  12.         formData.append(elementos[i].name, elementos[i].value);
  13.     }
  14. }
  15.  
  16. //Acá ejecutas al método Ajax

Lo que hago es simple. Primero, tomo al formulario, sus elementos y el total que estos representan, además, creo al objeto FormData, luego, recorro al conjunto de elementos del formulario y, en cada iteración, verifico el tipo de elemento de cada uno de ellos. Cuando se trate de un campo de tipo file, obtengo al conjunto de elementos que este posea y añado al primero de ellos (suponiendo que solo enviarás un archivo, de lo contrario, tendrás que usar un bucle para ir añadiéndolos) al objeto, caso contrario, es decir, si se trata de otro tipo de elemento, simplemente añado su valor. En ambos casos, cada valor irá relacionado al nombre del elemento.

Luego de esto, puedes enviar al objeto FormData a través del método Ajax. Solo como un consejo, la próxima vez, busca la documentación respectiva para que sepas qué hacer, aquí hay parte de lo que puedes encontrar con una simple búsqueda.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand