Aufteilen einer Datei vor dem upload?
Auf einer Webseite, ist es möglich, split große Dateien in Stücke, bevor Sie die Datei auf den server hochgeladen? Zum Beispiel, teilen eine 10MB-Datei in 1 MB-Blöcken, und laden Sie ein Stück zu einer Zeit, während zeigt ein Fortschrittsbalken?
Es klingt wie JavaScript nicht über eine Datei-manipulation Fähigkeiten, aber was ist mit Flash und Java-applets?
Dies würde die Notwendigkeit zu arbeiten in IE6+, Firefox und Chrome. Update: vergaß zu erwähnen, dass (a) wir sind mit Grails und (b) dies muss ausgeführt werden, die über https.
Dies ist wahrscheinlich möglich, die in Flash und Java, aber warum? Was für einen Sinn würde das machen? Wollen Sie umgehen, Größenbeschränkungen?
Hier ist noch eine ähnliche Frage: stackoverflow.com/questions/3155587/...
Ich bin vor allem erforschen Sie diese option, um zu vermeiden, dass für den Umgang mit großen Dateien der server-Seite. Die Inhalte der hochgeladenen Dateien müssen eingelesen und gespeichert in der DB. Für eine große Menge von Daten auf einmal, wir bräuchten eine pool speziell von langlebigen Gewinde auf der front-ends zum übertragen aller Daten, möglicherweise zunächst an einen back-End-Dienst über RPC und dann die DB selbst. Dann gäbe es die Probleme, die der Umgang mit Datei-Bereinigung, Wiederholungen, frontend-Server abstürzt, Speicher-management und so weiter. All dies ist machbar, aber wenn es getan werden könnte auf der client-Seite, konnte ich die Lösung aus der Tür, viel schneller.
Versuchen Sie dieses verwenden: stackoverflow.com/a/12056417/551744 . Ich relialized teilen von Dateien mit JavaScript und verschmelzen Sie auf der server-Seite. Dies kann auch helfen: html5rocks.com/ru/tutorials/file/dndfiles
Hier ist noch eine ähnliche Frage: stackoverflow.com/questions/3155587/...
Ich bin vor allem erforschen Sie diese option, um zu vermeiden, dass für den Umgang mit großen Dateien der server-Seite. Die Inhalte der hochgeladenen Dateien müssen eingelesen und gespeichert in der DB. Für eine große Menge von Daten auf einmal, wir bräuchten eine pool speziell von langlebigen Gewinde auf der front-ends zum übertragen aller Daten, möglicherweise zunächst an einen back-End-Dienst über RPC und dann die DB selbst. Dann gäbe es die Probleme, die der Umgang mit Datei-Bereinigung, Wiederholungen, frontend-Server abstürzt, Speicher-management und so weiter. All dies ist machbar, aber wenn es getan werden könnte auf der client-Seite, konnte ich die Lösung aus der Tür, viel schneller.
Versuchen Sie dieses verwenden: stackoverflow.com/a/12056417/551744 . Ich relialized teilen von Dateien mit JavaScript und verschmelzen Sie auf der server-Seite. Dies kann auch helfen: html5rocks.com/ru/tutorials/file/dndfiles
InformationsquelleAutor Yevgeniy Brikman | 2010-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen,Plupload. Es kann konfiguriert werden, um zu überprüfen, was auch immer-Laufzeitumgebung verfügbar ist, auf der Benutzer Seite, sei es Flash, Silverlight, HTML5, Getriebe, etc, und je nachdem, was erfüllt die gewünschten Funktionen zuerst. Unter anderem unterstützt die Bildgrößenanpassung (auf Benutzer-Seite, die Bewahrung von EXIF-Daten(!)), Strom-und multipart-upload, und chunking. Dateien können, werden chunked auf Nutzer-Seite, und an eine server-side-handler chunk-für-chunk (erfordert einige zusätzliche Pflege auf dem server), so dass Sie große Dateien können hochgeladen werden auf einen server mit max filesize-limit auf einen Wert festgelegt, viel niedriger als Ihre Größe, zum Beispiel. Und mehr.
Einige Laufzeitumgebungen unterstützen https glaube ich, einige die getestet werden müssen. Trotzdem, die Entwickler dort sind sehr reaktionsschnell Weg in diesen Tagen. So könnte man zumindest versuchen 😉
InformationsquelleAutor jayarjo
Ist die einzige option die ich kenne, die es erlauben würde, dies wäre ein signiertes Java-applet.
Nicht signierte applets und Flash-Filme haben kein Dateisystem-Zugriff, so dass Sie wäre nicht in der Lage, die Datei zu Lesen Daten. Flash ist in der Lage, Dateien hochzuladen, aber die meisten, die verarbeitet wird, indem Sie den integrierten Flash-Implementierung und von dem, was ich erinnere mich an den Inhalt der Datei würde nie ausgesetzt werden, um Ihren code.
Interessant. Ich wusste nicht, Sie würden Hinzugefügt.
Ich habe "erfolgreich" umgesetzt aufgeteilte Datei-Upload in Flash mithilfe von FileReference. Ich sage "erfolgreich", weil flash müssen Lesen Sie die gesamte Datei in den Speicher. Hochladen einer 700MB Datei wird flash nicht mehr reagiert für 30 Sekunden, bevor der upload beginnt.
Hat Flash wirklich liest ganze Datei in den Speicher, bevor Sie hochladen? Nie gehört. Gibt es eine doc um, die das Problem beschreibt?
Ich bin mir nicht sicher über Ihre Antwort, als auf die plupload homepage können Sie gelesen, dass die Flash-version ist in der Lage die Datei chunking.
InformationsquelleAutor Herms
Gibt es keine JavaScript-Lösung für die Auswahl von Browsern. Es ist die Datei-API aber während es funktioniert in neueren Firefox-und Chrome-Versionen es ist nicht passiert im IE (keine Zeichen in IE9 Beta, aber entweder).
In jedem Fall, Lesen Sie die Datei lokal und lade ihn via XMLHttpRequest ist ineffizient, weil XMLHttpRequest-Objekt verfügt nicht über die Fähigkeit zum senden von rein binären, nur Unicode-text. Sie können Kodieren Binär-in text mit base-64 - (oder, wenn Sie wirklich gewidmet, eine benutzerdefinierte 7-bit-Codierung, die von Ihrer eigenen), jedoch ist dies weniger effizient als ein normaler Datei-upload.
Können Sie sicherlich tun uploads mit Flash (siehe SWFUpload et al), oder auch Java, wenn Sie müssen (Jumploader... ich würde nicht die Mühe, in diesen Tagen, obwohl, wie Flash-Prävalenz ist sehr hoch und das Java plugin ist weiter rückläufig). Sie gewann nicht unbedingt die low-level-regler, um split in Stücke, aber brauchen Sie wirklich? Was?
Ein weiterer möglicher Ansatz ist die Verwendung eines standard-HTML-Datei-upload-Feld, und beim submit-tritt ein Intervall festlegen, rufen Sie den server Abfragen mit XMLHttpRequest, zu Fragen, wie weit der upload ist. Dies erfordert ein wenig Arbeit auf dem server zum speichern der aktuellen upload-Fortschritt in der session oder Datenbank, damit Sie von einem anderen verlangen kann, es zu Lesen. Es bedeutet auch, mit einer form-parsing-Bibliothek, die Ihnen die Fortschritte Rückruf, die meisten standard-Sprache built-in-ones wie PHP ' s nicht.
Was auch immer Sie tun, nehmen Sie eine "progressive enhancement" - Ansatz, so dass die Browser keine Unterstützung zurückgreifen, um einen einfachen HTML-upload. Browser haben in der Regel eine upload progress bar für die HTML-Datei-uploads, es ist einfach eher klein und leicht zu übersehen.
Hmmm, dass die bar auf der unteren Seite von IE (6 & 7) bei der Arbeit ist sehr irreführend: wenn ich das senden von großen Dateien (in der Regel 10-50 MB) die bar ist voll Art, die früher als der Datei-upload tatsächlich endet.
Ja. Es gibt definitiv Probleme mit ihm vor allem im IE. Es ist ein bisschen traurig, wie es hat so viel Mühe in die Umgehung der HTML-Datei-upload-Kontrolle, bei der es gewesen sein könnte viel leichter gelöst mit ein wenig Arbeit von browser-Anbietern, die Ihre vorhandenen UI ein bisschen besser.
InformationsquelleAutor bobince
Haben Sie speziell müssen es zwei sein, in X Teile? Oder man versucht, die Probleme zu lösen führen durch das hochladen von großen Dateien? (z.B. nicht starten können einen upload auf der client-Seite, server-Seite stürzt ab, wenn die gesamte Datei hochgeladen und im Speicher gehalten alle auf einmal)
Suche nach streaming-upload-Komponenten. Es hängt davon ab, welche Technologien Sie arbeiten mit, welche Komponente Sie bevorzugen, jsp, asp.net usw.
http://krystalware.com/Products/SlickUpload/ Dies ist eine server-side-Produkt
Hier sind einige weitere Verweise auf verschiedene Uploader http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx
einige versuchen, verwalten von Speicher auf dem server,z.B. so dass die gesamte große Datei nicht in Speicher zu einer Zeit, versuchen einige zum verwalten der client-Seite Erfahrungen.
InformationsquelleAutor MatthewMartin