2008-08-29 17 views
12

Internet Explorer hat eine Datei Download-Limit von 4 GB (2 GB auf IE6). Firefox hat dieses Problem nicht (noch nicht getestet Safari) (Mehr Infos hier: http://support.microsoft.com/kb/298618)Große Datei herunterladen

ich auf einer Website arbeite, die der Benutzer ermöglichen sehr große Dateien zum Download (bis zu und über 100 GB)

Was ist der beste Weg, dies zu tun ohne Verwendung von FTP. Der Endbenutzer muss in der Lage sein, die Datei von seinem Browser über HTTP herunterzuladen. Ich glaube nicht, dass Flash oder Silverlight Dateien auf dem Client speichern kann, so weit ich weiß, dass sie es nicht schneiden werden.

Ich schätze, wir brauchen ein ActiveX oder Java-Applet, um dies abzuziehen. So etwas wie der Download-Manager, den MSDN verwendet.

Kennt jemand eine kommerzielle (oder freie) Komponente, die das tun wird? Wir möchten nicht, dass der Benutzer einen "browserweiten" Download-Manager (wie GetRight) installieren muss, wir möchten, dass er nur mit dem Download auf unserer Website funktioniert.

Update: Hier sind einige zusätzliche Informationen, um zu verdeutlichen, was ich versuche zu tun. Die meisten Dateien oberhalb der 4-GB-Grenze wären große HD-Videodateien (für eine Videobearbeitungsfirma). Diese werden von Benutzern über das Internet heruntergeladen, dies sind keine Personen in einem lokalen Netzwerk. Wir möchten, dass die Dateien über HTTP verfügbar sind (einige Benutzer werden hinter Firewalls stehen, die FTP, Bittorrent usw. nicht erlauben werden). Es handelt sich um eine Bibliothek von Dateien, die der Endbenutzer herunterladen kann. Es handelt sich also nicht um einen einmaligen großen Download. Es werden verschiedene große Dateien auf halbjährlicher Basis heruntergeladen.

Bisher Vault, dass @ Edmund-Tay vorgeschlagen, ist die bisher engste Lösung. Das einzige Problem ist, dass es nicht für Dateien arbeitet, die größer als 4GB sind (es schlägt sofort fehl, bevor der Download gestartet wird, sie benutzen wahrscheinlich eine 32bit-Integer irgendwo, die die Inhaltslänge der Datei überschreitet).

Ein Java-Applet (oder ActiveX-Komponente, da das Problem nur in IE existiert), die wie der Artikel @spoulson arbeitete, wäre die beste Lösung, aber bis jetzt hatte ich kein Glück, einen zu finden, der so etwas tut dass (mehrteilige Downloads, Lebenslauf usw.).

Es sieht so aus, als müssten wir vielleicht unsere eigenen schreiben. Eine andere Option wäre, eine .NET-Anwendung (möglicherweise ClickOnce) zu schreiben, die einer Erweiterung oder einem MIME-Typ zugeordnet ist. Dann lädt der Benutzer eine kleine Datei von dem Webserver herunter, der in der exe/ClickOnce-App geöffnet wird und der Anwendung mitteilt, welche Datei heruntergeladen werden soll. So funktioniert der MSDN-Downloader. Der Endbenutzer müsste dann nur einmal eine EXE herunterladen/installieren. Das wäre besser, als eine exe jedesmal herunterzuladen, wenn sie eine große Datei herunterladen wollten.

+0

nur fragen, was Sie mit diesem – travis

+0

für eine Lösung kam: „Ich glaube nicht, Flash oder Silverlight kann Dateien auf dem Client speichern, so weit ich weiß, dass sie es nicht schneiden werden. " Check out WeTransfer (https://www.wetransfer.com/) - Ich weiß nicht, wie es funktioniert (noch), aber es scheint, große Dateien über einen Flash-Client herunterzuladen. –

Antwort

6

bittorrent?

Es gab bereits einige webbasierte Versionen (bitlet,), und Azureus wurde mit Java erstellt, also ist es definitiv möglich.

Edit: @TonyB ist es begrenzt auf Port 80?

4

Bitte verwenden Sie nicht ActiveX ... Ich bin so krank von Websites, die nur in IE sichtbar sind.

Meine aktuelle Präferenz, als Benutzer, in diesen Situationen ist, eine leichte .exe-Datei herunterzuladen, die die Datei für Sie herunterlädt.

+0

Während ich die Sensibilität für IE-only-Lösungen zu schätzen weiß, würde ich die gleiche Sensitivität für Windows-only-Lösungen vorschlagen (es sei denn, Sie meinten .exe im übertragenen Sinne). –

0

@travis

Leider über HTTP innerhalb des Benutzer-Browser zu sein, es hat. Ich werde die Frage aktualisieren, um das deutlicher zu machen.

2

Können Sie die Dateien in Stücke teilen und dann nach dem Download wieder zusammenfügen?

0

@levand Das Problem existiert nur in IE (es funktioniert in Firefox) so, während ActiveX nur auf IE arbeiten würde, IE ist der einzige, den wir die Arbeit für brauchen.

@travis - interessante Idee. Ich bin mir nicht sicher, ob es für das funktioniert, was ich brauche, aber ich werde es mir merken. Ich hoffe, etwas zu finden, das in die bestehende Seite integriert werden kann, anstatt zu einer dritten Partei gehen zu müssen. Außerdem würde ich einen Bittorrent-Tracker einrichten müssen, der für diese Anwendung nicht so einfach ist, wie es sich anhört, weil verschiedene Benutzer unterschiedlichen Zugriff auf verschiedene Dateien haben.

0

@jjnguy Ich bin auf der Suche nach einem Java-Applet oder ActiveX-Komponente, die das für mich tun wird. Diese sind technisch nicht versierte Nutzer, so dass wir wirklich nur wollen, haben sie herunterladen klicken und die vollständige Datei endet in der angegebenen Position

7

@levand:

Meine eigentliche Präferenz, als Nutzer in diesen Situationen Laden Sie eine leichtgewichtige .exe-Datei herunter, die die Datei für Sie herunterlädt.

Das ist ein Dealbreaker für viele, viele Websites. Benutzer sind entweder oder sollte extrem widerwillig sein, um .exe-Dateien von Websites herunterladen und sie willy-nilly laufen. Selbst wenn sie nicht immer so vorsichtig sind, ist unvorsichtiges Verhalten nicht etwas, das wir als verantwortliche Entwickler ermutigen sollten.

Wenn Sie an einem Unternehmensintranet arbeiten, ist eine EXE möglicherweise eine gute Lösung, aber für das öffentliche Web? Auf keinen Fall.

@TonyB:

Was ist der beste Weg, dies zu tun, ohne FTP.

Es tut mir leid, aber ich muss fragen, warum die Anforderung. Ihre Frage lautet: "Was ist die beste Art, ein Steak ohne Fleisch oder Hitze zu kochen?" FTP war entworfen für diese Art von Sache.

0

@ceejayoz

Ich ist völlig einverstanden, aber von der Forderung für unsere Kunden eine Rolle. Es wird FTP-Zugang geben, aber jeder Benutzer hat die Möglichkeit, über HTTP oder FTP herunterzuladen. Es gibt einige Benutzer, die hinter Unternehmensfirewalls stehen, die FTP nicht zulassen. Ich habe gesehen, dass andere Sites dies in der Vergangenheit getan haben (MSDN, Adobe), also hatte ich gehofft, dass es da draußen schon etwas gibt One in House (und Java und/oder ActiveX Learning)

0

Ich sage Click-Once Download-Manager installiert, ähnlich wie MSDN.

Aber ein CDN ohne ein optimiertes Protokoll für den Job zu werden, ist keine leichte Aufgabe. Ich kann mir kein Geschäftsmodell vorstellen, das sich lohnt, so große Dateidownloads als Kernkompetenz zu haben, es sei denn, Sie tun etwas wie msdn. Wenn Sie einen Thick-Client erstellen, haben Sie zumindest die Chance, sich mit den Nutzern, für Werbung oder für ein anderes Erlösmodell etwas mehr Zeit zu nehmen, da Sie wahrscheinlich in die Hunderttausende von Dollar investieren werden, um einen solchen Dienst zu hosten.

0

Das Problem mit dem erwähnten Applet-Ansatz ist, dass Ihr Applet keine Berechtigung zum Speichern auf der Festplatte hat, wenn Sie nicht möchten, dass der Endbenutzer seine Java-Sicherheitseigenschaften ändert.

Es kann möglich sein, Java Web Start (alias JNLP) zu verwenden. Ich denke, wenn es eine signierte App ist, kann es die zusätzliche Erlaubnis bekommen, auf die Festplatte zu schreiben. Dies unterscheidet sich nicht zu sehr von dem Download-exe-Ansatz. Das Problem dabei ist, dass der Benutzer die korrekte Version von Java installiert haben muss und dass die Java Web Start-Funktion korrekt eingerichtet sein muss.

Ich würde den exe-Ansatz empfehlen, da es für die nicht-technischen Benutzer am einfachsten zu verwenden ist.

1

Wenn Sie nicht über Java-Code in-house schreiben wollen, gibt es kommerzielle Applet-Lösungen zur Verfügung:

von ihnen beiden eval Versionen haben, dass Sie kann heruntergeladen und getestet werden.

0

Es gibt einige Benutzer, die hinter Firewalls von Unternehmen sein, die FTP nicht zulassen ...

Sind Benutzer mit restriktiven Firewalls wie das wahrscheinlich eine EXE-Datei zu installieren und auszuführen erlaubt zu sein von Ihrer Website?

1

Einige Ideen:

  • Blizzard eine leichte .exe BitTorrent-Wrapper für ihre Patches verwenden. Ich bin mir nicht ganz sicher, wie es gemacht wird, aber es sieht wie eine Markenversion des offiziellen BitTorrent-Clients aus.
  • Laden Sie auf Amazon S3 hoch, stellen Sie den Torrent-Link der Datei bereit (alle S3-Dateien sind automatisch BitTorrent-fähig) und zusätzlich den vollständigen HTTP-Downloadlink als Alternative. See S3 documentation
0

Werfen Sie einen Blick auf cURL. This article beschreibt, wie Sie einen mehrteiligen gleichzeitigen Download über HTTP durchführen können. Ich habe cURL in der Vergangenheit verwendet, um FTP-Downloads von Dateien über 300 GB zu verwalten.

Ein weiterer Tipp: Sie können die Downloadzeiten sogar noch erhöhen, wenn Sie die Größe des TCP-Fensters in der NIC-Konfiguration des Clients erhöhen. Stellen Sie es so hoch ein, wie es das Betriebssystem erlaubt, und Sie sollten bis zu 2x Verbesserung sehen, abhängig von Ihrem physischen Netzwerk. Dies funktionierte bei Windows 2000 und 2003 bei FTP über ein WAN. Der Nachteil ist, dass es den Overhead für den gesamten Netzwerkverkehr erhöhen kann, der nur ein paar KB für ein Netzwerkpaket benötigt, aber jetzt gezwungen ist, 64 KB-Pakete zu senden/zu empfangen. Ihre Laufleistung kann variieren.

Bearbeiten: Was genau möchten Sie erreichen? Wer ist das Publikum?Ich bin davon ausgegangen, dass Sie dies über Ihr eigenes Netzwerk tun möchten; aber Sie scheinen zu unterstellen, die Client-Seite ist jemand im Internet. Ich denke, wir brauchen klarere Anforderungen.

1

Wenn Sie sagen "Wir empfehlen, dass Sieinstallieren, um diese Datei herunterzuladen. Sie werden den zusätzlichen Vorteil haben, die Datei fortsetzen und den Download beschleunigen zu können."

persönlich lade ich nie etwas mit der Browser-Download-Tool gebaut, es sei denn ich (zB Google Mail-Anhänge) haben