none
[DUDA] Duda con cabeceras html a un Controlador RRS feed

  • 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.


    viernes, 29 de mayo de 2015 16:03

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

    lunes, 1 de junio de 2015 1:40

Todas las respuestas

  • hola

    es que XMLHttpRequest no funciona en todos los browser

    debes usar jquery para subir archivos multiples desde javascript

    jQuery-File-Upload

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 29 de mayo de 2015 16:51
  • 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!.

    viernes, 29 de mayo de 2015 19:24
  • 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

    viernes, 29 de mayo de 2015 20:59
  • 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.

    lunes, 1 de junio de 2015 0:33
  • 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

    lunes, 1 de junio de 2015 1:40