2015-05-08 9 views
15

Ich muss irgendwie eine Fähigkeit zum Hochladen von Dateien über eine ASP.NET-Anwendung implementieren, die innerhalb unseres Unternehmensnetzwerkes funktioniert. Das Problem ist, dass diese Dateien immer größer werden. Im Moment verwenden wir einen sehr generischen asynchronen Upload, aber das Problem ist, dass Dateien immer größer werden und das maximale Limit von 3,9 GB pro Datei über maxAllowedContentLength gesetzt wird, da der Maximalwert von uint nichts mehr zulässt. Bald werden die Dateien, die die Benutzer hochladen sollen, diesen Wert überschreiten und eine Größe von bis zu 100 GB erreichen.Hochladen einer großen Datei (bis zu 100 GB) durch ASP.NET-Anwendung

Ich habe versucht, online nach einer Lösung für dieses Problem suchen, aber in den meisten Artikeln von großen Dateien Menschen bedeuten 1GB bestenfalls.

Gibt es eine Möglichkeit, wirklich große Dateien (bis zu 100g) über ASP.NET MVC \ WebAPI-Anwendung hochzuladen oder muss ich nach alternativen Lösungen suchen?

+0

@Kamo Dies B. tatsächlich planen Das Problem ist, dass unsere Nutzer eine bestimmte Form einer Datei, bevor das Hochladen füllen Und um ihnen beizubringen, wie man FTP benutzt, würde zu viel Zeit in Anspruch nehmen, so dass wir einen eigenen FTP-Client dafür schreiben müssten. Aber bevor ich das tue, möchte ich alle Möglichkeiten erkunden, unsere bestehende Lösung zu modifizieren. – user3223738

+0

@ user3223738 Sie könnten die Dateien programmgesteuert über FTP senden? –

+0

@ user3223738 können Sie die Benutzer bitten, ihre Dateien nach dem Ausfüllen des Formulars in den freigegebenen Ordner zu kopieren? Pfad des freigegebenen Ordners kann nach der Formularablage angezeigt werden. – Amitd

Antwort

3

Sie könnten in Erwägung ziehen, es in Blöcken zu senden. Dies würde die große Dateianforderung überspringen (da jede Anforderung nur die Größe des von Ihnen gesendeten Chunks ist), ist jedoch auf der Client- und Serverseite etwas komplizierter.

Ich habe etwas ähnliches getan, um hochgeladene Dateien über einen Websocket zu streamen, aber dies könnte leicht mit mehreren Ajax-Anfragen geschehen. In beiden Fällen sollten Sie die Datei JavaScript File API verwenden, um ein Segment der Datei auf dem Computer des Clients zu lesen, dieses Segment in etwas zu codieren, das Sie senden können (wahrscheinlich Base64), und dieses bestimmte Segment an den Webserver senden. Sie können auch zusätzliche Daten wie die Dateiposition senden, um sicherzustellen, dass der Server die Datei ordnungsgemäß schreibt. Der Server kann wählen, wie er antworten soll (kann so einfach wie ein "wahr" sein, um den Empfang zu bestätigen), nach dem das Client-Javascript den nächsten Teil der Datei lesen und senden würde.

Ich habe eine Demo von diesem mit WebSockets auf einem github repo here (ASP.NET MVC server-side code here), aber mit ein paar Verbesserungen können Sie dies leicht zu sequentiellen AJAX-Anfragen machen.

Verwandte Themen