.net - mixto - para que sirve http
Http y carga de archivos-¿Cómo funciona realmente(bajo el capó) (2)
Ok, esto puede parecer un poco novedoso, pero muchos de los desarrolladores web que conozco no tienen una comprensión completa de.
Básicamente, ¿cómo se carga un archivo de un cuadro de entrada de archivo de página web a un servidor web (que aloja un sitio .net, por ejemplo) con un evento cargado del control FileUpload?
Según tengo entendido, se realizó una publicación en el servidor solicitando una transmisión, que luego se devuelve al navegador y comienza la transmisión de los datos al servidor.
Mi amigo dice que entendió que todo el archivo está codificado en la solicitud de publicación por el navegador y que la publicación (masiva) se envía al servidor.
Pensé que este no podría ser el caso como si no hubiera manera de construir una barra de progreso de ajax, ya que el servidor no podría hacer nada hasta que hubiera recibido la publicación completa, momento en el que también podría guardar la archivo a su disco.
Entonces, ¿cómo funciona realmente del navegador al servidor?
Creo que su amigo tiene razón, el archivo está codificado en la publicación enviada al servidor. Si realmente desea ver exactamente cómo funciona, intente usar los datos de manipulación en Firefox para ver los datos reales de la publicación.
ETA:
Las cargas de estilo AJAX que mencionas funcionan al hacer la publicación en un iframe oculto, luego usar las solicitudes de AJAX para verificar el progreso de la carga en el lado del servidor.
Tu amigo tiene razón. Si quieres una barra de progreso AJAX, tienes que saltar a través de algunos aros.
Por lo general, la técnica consiste en publicar la carga dentro de un iframe en un IHttpHandler en el servidor que almacena el progreso en el servidor en un diccionario que incluye un identificador que el cliente e incluye tanto en la solicitud de progreso AJAX como en la publicación de carga. De esa manera, cuando el cliente realiza las solicitudes de AJAX, el código del servidor que procesa esa solicitud puede leer el valor de ese diccionario para ver cuántos bytes del archivo de la solicitud POST ha procesado el servidor.
Sí, es complicado :)