2009-03-28 25 views
19

Necesito una forma de cargar archivos de gran tamaño (600 MB a 4 GB) en un sitio web asp.net mvc. Actualmente estoy usando swfupload; funciona bastante bien, pero es un gran éxito en el servidor web porque lo envía en una gran carga, además tengo que configurarlo en el archivo web.config para permitir ese gran archivo, que es un gran riesgo de seguridad. En el pasado, cuando estaba haciendo desarrollo de formularios web, usé Neatupload, que divide el archivo en fragmentos y los sube individualmente. Estoy buscando una manera de cargar archivos grandes en mvc que se cargan a través de fragmentación. ¿Alguna idea sobre cómo podría hacer esto?Carga de archivo grande en asp.net MVC

Respuesta

8
+0

Gracias amigo, esto es lo que he estado buscando –

+1

Solo para que cualquiera que visite esto lo sepa. Tomé esto modificado y lo uso ahora. swfupload me daba demasiados problemas una vez que los archivos superaban 1GB – Solmead

1

¿Puede hacer algo similar a lo que se describe en this link? No veo por qué eso no funcionaría en ASP.NET MVC.

+0

URL ha muerto para mí –

7

Terminé usando Darren Johnstone's ASP.NET File Upload Module para manejar la carga en el lado del servidor. Aunque lo modifiqué un poco para que pudiera tomar una guía en la cadena de consulta que salvaría el archivo temporal a ese nombre guía.

Fue agradable porque guardó el archivo cuando llegó al servidor, y eliminó el archivo de los datos publicados que luego envía a la acción en el controlador que se especificó.

+0

¿Cómo conseguiste que funcionara en ASP.NET MVC sin los controles runat = server? ¿Hay puntos de inserción en las clases restantes? ¿Te importaría compartir una muestra de código? –

+1

El módulo de carga contiene 2 piezas, la primera es un httfandler que cuando se publica un archivo (usando codificación mime) quita el archivo guardando directamente como va y luego deja que se llame a cualquier página/controlador y luego se llama, solo con archivos [] matriz vacía. La segunda parte es los controles utilizados para formularios asp.net estándar. No usé esos controles para nada. En cambio, utilicé el swfupload que he vinculado en la pregunta original, que usa js y flash para cargar un archivo. Luego tuve una llamada de acción "UploadAsync" en un controlador que el swfupload estaba configurado para publicar en. – Solmead

+0

¿Podría compartir un ejemplo de código? Gracias –

2

ejemplo, en mi opinión:

<input id="FileGUID" name="FileGUID" type="hidden" value="f632c00b-9b66-4716-8075-79df63b780fb" /> 
    <input type="file" id="FileUpload1" name="fileUpload1" /> 

    <script type="text/javascript"> 
     var UploadUrl = '/Video/AsyncUpload?FileGUID=f632c00b-9b66-4716-8075-79df63b780fb'; 
     $(function() { 
      $("#FileUpload1").makeAsyncUploader({ 
       upload_url: UploadUrl, 
       flash_url: '/Content/Flash/swfupload.swf', 
       button_image_url: '/Content/Images/blank-button.png', 
       button_text: '<font face="Helvetica, Arial" size="13pt" color="#ffffff">Upload File</font>', 
       disableDuringUpload: 'input[type="submit"]', 
       file_size_limit: '8024 MB', 
       button_text_top_padding: 2 
      }); 
     }); 
    </script> 

Luego, en la acción real con excepción de esta página busco un archivo en el que la acción asyncupload habría guardado el archivo en base a la FileGUID

aplicación
1

Un SignalR ejemplo se puede encontrar here.

Esto también incluye la funcionalidad para trabajar con HttpContext.Request.GetBufferlessInputStream(), que le permite comenzar a trabajar con los datos de la publicación antes de que se cargue por completo.

+0

El enlace que proporcionó está muerto. –

+0

He reemplazado el enlace – gb2d