2017-12-21 2 views
1

Ich finde es schwierig herauszufinden, wie die Datei InputStream vom Dateiupload abgerufen wird. Anfrage an den Server senden, bevor sie vollständig in den Speicher geladen wird.ASP.NET MVC 4 Dateieingabestream abrufen, bevor der Arbeitsspeicher des Servers vollständig gefüllt wird

Das ist nicht problematisch für kleinere Dateien, aber ich mache mir Sorgen, was passiert, nachdem ich versucht habe, eine größere Datei (1 oder mehr GB) hochzuladen. Ich fand eine mögliche Lösung mit HttpContext.Request.GetBufferlessInputStream(true), aber dieser Stream enthält die gesamte Anfrage nicht nur die Hochladedatei und wenn ich es zum Hochladen einer Datei zum Beispiel in den Azure Blob Storage oder irgendwo sonst ich mit der beschädigten Datei. Ich verliere auch alle Informationen über die Datei (Dateiname, Größe, etc.).

Gibt es eine bequeme Möglichkeit, eine große Datei auf den Server hochzuladen, ohne den Speicher zu füllen? Ich möchte den Stream erhalten und dann verwenden, um eine Datei irgendwo in Chunks hochzuladen.

Vielen Dank.

Antwort

1

Ich habe DevExpress UploadControl für eine ähnliche Aufgabe verwendet. Es unterstützt large file upload by chunks. Eine temporäre Datei wird auf einer Serverfestplatte gespeichert und Sie können sie mit FileSteam ohne vollständiges Laden im Serverspeicher abrufen. Es unterstützt auch direct upload zu Azure, Amazon und Dropbox. Das gleiche gilt für ihre MVC-Upload-Steuerung.