2009-03-28 30 views
19

Ho bisogno di un modo per caricare file di grandi dimensioni (da 600 a 4 GB) in un sito Web di asp.net mvc. Attualmente sto usando swfupload; funziona abbastanza bene, ma è un grande successo sul webserver perché lo invia in un grande upload, in più devo impostarlo nel web.config per consentire quell'enorme file, che è un enorme rischio per la sicurezza. In passato, quando stavo sviluppando i moduli Web, ho utilizzato Neatupload che suddivide il file in blocchi e li carica individualmente. Sto cercando un modo per caricare file di grandi dimensioni in mvc che vengono caricati tramite un chunking. Qualche idea su come potrei fare questo?Caricamento di file di grandi dimensioni su asp.net MVC

risposta

8
+0

Grazie amico, questo è quello che stavo cercando –

+1

Solo così chiunque visiti questo sa. Ho preso questo modificato e lo uso ora. swfupload mi stava dando troppi problemi una volta che i file fossero sopra 1 GB – Solmead

1

Puoi fare qualcosa di simile a quanto descritto in this link? Non vedo perché non funzionerebbe in ASP.NET MVC.

+0

L'URL è morto per me –

7

ho finito per usare Darren Johnstone's ASP.NET File Upload Module per gestire il caricamento sul lato server. Anche se l'ho leggermente modificato in modo che potesse prendere un guid sul querystring che avrebbe salvato il file temp su quel nome di guida.

È stato bello perché ha salvato il file non appena è arrivato sul server e ha rimosso il file dai dati inviati che poi invia all'azione sul controller specificato.

+0

Come hai fatto a farlo funzionare in ASP.NET MVC senza i comandi runat = server? Ci sono punti di punch-in nelle restanti classi? Ti dispiacerebbe condividere un esempio di codice? –

+1

Il modulo di upload contiene 2 pezzi, il primo è un httphandler che quando un file viene pubblicato (usando la codifica mime) spegne il file salvando direttamente come va e permettendo di chiamare qualsiasi pagina/controller, quindi con il files [] array vuoto. La seconda parte sono i controlli utilizzati per i moduli standard di asp.net. Non ho usato quei controlli affatto. Invece ho usato il swfupload che ho collegato nella domanda originale, che usa js e flash per caricare un file. Ho quindi effettuato una chiamata di chiamata "UploadAsync" su un controller su cui swfupload è stato configurato per la pubblicazione. – Solmead

+0

Potresti condividere un esempio di codice? Grazie –

2

esempio a mio avviso:

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

Poi l'azione reale salvare per questa pagina Cerco un file in cui l'azione asyncupload avrebbe salvato il file in base alla FileGUID

implementazione
1

A SignalR esempio può essere trovato here.

Questo include anche le funzionalità per lavorare con HttpContext.Request.GetBufferlessInputStream(), che consente di iniziare a lavorare con i dati del post prima che sia completamente caricato.

+0

Il link che hai fornito è morto. –

+0

Ho sostituito il collegamento – gb2d

Problemi correlati