Principales respuestas
[DUDA] Duda con cabeceras html a un Controlador

Pregunta
-
Ocurre lo siguiente, es algo que no entiendo y me gustaría que explicaran, aca vamos:
Cree una pagina en HTML5, esta contiene un input tipo file multiple, la idea que tengo es cargar multiples archivos, estos multiples archivos a través de JavaScript los listo en una tabla, y una vez que la tabla esta creada empiezo a subir archivo por archivo a una carpeta temp con XMLHttpResponse (no es asíncrono, puse el atributo en false, pero no es el tema)
En IE funciona perfecto con las siguientes líneas (Con coffeScript), pero no en chrome, firefoz ni Vivaldi
@anadirArchivo = (e) -> input = document.getElementById("archivos") archivos = input.files @listarDocumentos e for archivo in archivos #Uso de AJAX if(window.XMLHttpRequest) console.log "General" xmlHttp = new XMLHttpRequest() else console.log "Solo MS" xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") form = new FormData() form.append "File", archivo xmlHttp.open "POST", "/Home/backupFiles", false xmlHttp.setRequestHeader "Content-Type", "multipart/form-data" xmlHttp.send(form) row.html xmlHttp.responseText
Esto no me funcionaba, pero al momento de comentar la siguiente línea
# xmlHttp.setRequestHeader "Content-Type", "multipart/form-data"
Ocurrio la magia para todos los navegadores, y resulto de una forma muy gratificante para mi.
Mi duda, porque en IE si y en los otros no?
Alguna respuesta técnica y algún material de estudio para comprender porque pasa esto?
De ante mano gracias.
- Editado Hugo Gallardo viernes, 29 de mayo de 2015 16:05
Respuestas
-
hola
podrias usar fiddler y analizar que header se envian cuando subes un archivo, de esta forma validar si quizas se detecta automaticamente el Content-Type
analizando que se envia en el request podrias ver porque se sube correctamente el archivo
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Karen MalagónModerator martes, 2 de junio de 2015 17:15
Todas las respuestas
-
hola
es que XMLHttpRequest no funciona en todos los browser
debes usar jquery para subir archivos multiples desde javascript
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Pero ahora funciona, ósea XMLHttpResponse es la piedra angular de AJAX según 3WC, el tema seria que no trabaja igual en todos los navegadores.
Pero como explico ahora funciona y no entiendo cual es la diferencia entre poner la línea o sacarla.
Línea de conflicto
# xmlHttp.setRequestHeader "Content-Type", "multipart/form-data"
Eso es mas que nada, la duda existencial!.
-
sigo pensando que deberias usar jquery, tener compatibilidad para todos los browsers no es simple de implementar
----
ademas cuando haces el if(window.XMLHttpRequest) no deberias usar las llaves ?
if(window.XMLHttpRequest){ console.log "General" xmlHttp = new XMLHttpRequest() } else { console.log "Solo MS" xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
}
digo porque sino lo defines solo tomara una line como parte del if
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
muchas gracias por tomarte el tiempo en responder.
Creo que mal interpretas un poco, el motivo de este hilo es porque quiero entender el porque pasa el problema, la solución corre y todo va bien ahora, pero me incomoda no saber el motivo del quitar dicha linea de codigo.
El tema de los parentecis, utilizo coffescript, coffescript no utiliza llaves, utiliza la identación para encapsular los bloques de codigo.
Slds. gracias.
-
hola
podrias usar fiddler y analizar que header se envian cuando subes un archivo, de esta forma validar si quizas se detecta automaticamente el Content-Type
analizando que se envia en el request podrias ver porque se sube correctamente el archivo
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Karen MalagónModerator martes, 2 de junio de 2015 17:15