¿Cuál es el mejor método para cargar archivos de tamaño variable (ya sea muy grande o muy pequeño para un sistema de archivos de aplicación ASP.NET MVC 2)?¿Cuál es la mejor manera de cargar archivos con ASP.NET MVC 2?
Esto es lo que entiendo hasta ahora:
Parece que hay dos maneras en que las personas se ocupan de esto. (Vamos a suponer que los archivos pueden ser muy grandes o muy pequeños)
(1) Manejar la carga en una acción de control a través de Request.Files
o HttpPostedFileBase
, que parece tener una desventaja de tomar mucho tiempo porque ASP.NET carga los archivos en la memoria activa.
o
(2) interceptar la carga de archivos desde el principio con un HttpModule que de alguna manera evita el problema de rendimiento. (Estoy un poco nublado sobre cómo funciona esto, pero he estado usando este post http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/ como referencia). La parte de la que estoy confundido es en qué punto ASP.NET carga los archivos enviados a la memoria activa, y cómo la interceptación en un módulo realmente cambia este comportamiento.
Como la segunda opción es más rápida, parece ser la mejor opción. Pero parece que una aplicación que envía un formulario de carga probablemente tenga algunos datos asociados con el archivo que necesita persistir en una base de datos. No quiero hacer llamadas de persistencia en mi HttpHandler o HttpModule, (porque entonces tendré dos funcionalidades muy similares que ocurren en diferentes lugares: el controlador y el controlador http).
Supongo que una solución sería almacenar la ubicación del archivo de destino en HttpContext.Items, pero es la mejor manera?
Una última preocupación sobre esto es que quiero renderizar una HttpResponse antes de que el archivo termine de cargarse. Entonces, si hay un archivo grande, enviaré al usuario una vista con el valor del estado de carga y hago llamadas AJAX para mantener el estado actualizado. ¿Cómo presento un resultado mientras sigo el proceso de carga? ¿Necesito hacer un AsyncHandler o AsyncController? ¿Necesito tomar otro hilo manualmente?
Muchas gracias chicos. Sé que esta es una gran cantidad de preguntas, y probablemente refleja una falta general de comprensión sobre algo. Lo curioso de las carencias generales de comprensión es que las personas que las tienen también tienden a carecer de la comprensión de qué comprensión les falta ... así que, si alguien puede indicarme la dirección correcta en esa nota también, lo agradecería. .
posible duplicación de [File upload MVC] (http://stackoverflow.com/questions/765211/file-upload-mvc) – jgauffin
¿Está bromeando? – smartcaveman
@jguaffin: la pregunta a la que se vincula no está relacionada en absoluto con este problema. – Fenton