2016-07-03 9 views
0

Unsere Anwendung ist vollständig auf Websockets aufgebaut. Wir führen keine HTTP-Anfrage-Antwort aus. Wir sind jedoch mit dem Herunterladen von Dateien beschäftigt. Wenn ich Dateiinhalte über Websockets erhalte, kann ich in den lokalen Ordner auf dem Benutzercomputer schreiben?Datei über Websocket empfangen und in lokalen Ordner speichern/schreiben

Wenn es einen Unterschied macht, unterstützen wir Chrome nur nicht, wenn es nicht in anderen Browsern funktioniert.

Auch ich weiß, dass ich dies über HTTP tun kann. Versuchen Sie es zu vermeiden und halten Sie sich an websockets, da so die gesamte App ist.

Vielen Dank im Voraus!

Antwort

1

Die Lösung hängt von der Größe Ihrer Datei ab.

Wenn die Größe weniger als etwa 50 MB ist, würde ich den Inhalt der Datei zu Base64-Zeichenfolge auf dem Server codieren und diese Zeichenfolge an den Client senden. Der Client sollte Teile der Zeichenfolge erhalten, sie zu einem einzelnen Ergebnis zusammenführen und speichern. Fügen Sie nach dem Empfangen der gesamten Zeichenfolge einen Link (Tag <a>) zu Ihrer Seite hinzu, wobei das Attribut href auf "data:<data_type>;base64,<base64_encoded_file_content>" festgelegt ist. <data_type> ist ein Mime-Typ Ihrer Datei, zum Beispiel "text/html" oder "image/png". Geben Sie den Dateinamen an, indem Sie das Attribut download dem Namen der Datei hinzufügen (funktioniert nicht für Chrome unter OS X).

Leider habe ich keine Lösung für große Dateien. Derzeit gibt es nur FileEntry API, die Dateien mit JS schreiben können, aber gemäß der Dokumentation wird nur von Chrome v13 + unterstützt, erfahren Sie mehr hier https://developer.mozilla.org/en-US/docs/Web/API/FileEntry.