Qual è il metodo migliore per caricare file di dimensioni variabili (molto grandi o molto piccoli in un file system dell'applicazione ASP.NET MVC 2)?Qual è il modo migliore per caricare file con ASP.NET MVC 2?
Questo è quello che ho capito finora:
Sembra che ci sono due modi in cui le persone gestiscono questo. (Supponiamo che i file possano essere molto grandi o molto piccoli)
(1) Gestire il caricamento in un'azione controller tramite Request.Files
o HttpPostedFileBase
, che sembra avere uno svantaggio di richiedere molto tempo perché ASP.NET carica i file nella memoria attiva.
o
(2) intercetta il caricamento di file nella fase iniziale di un modulo Http, che in qualche modo aggira il problema di prestazioni. (Sono un po 'nuvoloso su come funziona, ma sto usando questo post http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/ come riferimento). La parte in cui sono confuso riguarda il punto in cui ASP.NET carica i file inviati nella memoria attiva e in che modo l'intercettazione di questo in un modulo modifica effettivamente questo comportamento.
Poiché la seconda opzione è più veloce, sembra l'opzione migliore. Ma sembra che un'applicazione che invia un modulo di caricamento probabilmente avrà alcuni dati associati al file che deve essere conservato in un database. Non voglio effettuare chiamate di persistenza nel mio HttpHandler o HttpModule (perché allora avrò due funzionalità molto simili che si verificano in posti diversi: il controller e il gestore HTTP).
Immagino che una soluzione sarebbe quella di memorizzare la posizione del file di destinazione in HttpContext.Items, ma è questo il modo migliore?
Un ultimo problema è che voglio eseguire il rendering di HttpResponse prima del caricamento del file. Pertanto, se è presente un file di grandi dimensioni, invierò all'utente una vista con il valore dello stato di caricamento e effettuerà chiamate AJAX per mantenere aggiornato lo stato. Come si esegue il rendering di un risultato mentre si continua il processo di caricamento? Devo fare un AsyncHandler o AsyncController? Devo prendere manualmente un altro thread?
Grazie mille ragazzi. So che questo è un sacco di domande e probabilmente riflette una generale mancanza di comprensione di qualcosa. La cosa buffa della mancanza di comprensione generale è che le persone che li hanno tendono anche a non comprendere la comprensione di ciò che manca loro ... quindi, se qualcuno può indicarmi la giusta direzione anche su quella nota, lo apprezzerei .
possibile duplicato di [MVC caricamento file] (http://stackoverflow.com/questions/765211/file-upload-mvc) – jgauffin
Stai scherzando? – smartcaveman
@jguaffin: la domanda a cui ci si collega non è affatto correlata a questo problema. – Fenton