Speichern einer Uint8Array in eine binäre Datei
Arbeite ich an einer web-app, öffnet Binär-Dateien, und Sie können bearbeitet werden.
Dieser Prozess ist im Grunde ondrop -> dataTransfer.files[0] -> FileReader -> Uint8Array
Im wesentlichen, ich möchte in der Lage sein, um speichern Sie die geänderte Datei wieder als eine binäre Datei. Ideal als Datei-download mit einem bestimmten Dateinamen.
Dort scheint nicht zu jedem standard-Methode, dies zu tun, und das nervt, weil alles bis zu diesem Punkt unterstützt.
Ich bin derzeit auf der Umwandlung des Arrays in eine Zeichenfolge mit String.fromCharCode()
, base64-Codierung, und die Verwendung einer Daten-uri in einen hyperlink wie data:application/octet-stream;base64,..
zusammen mit den download
- Attribut angeben, mit dem Namen.
Scheint es zu funktionieren, aber es ist ziemlich hacky und ich denke, dass die Konvertierung der raw-bytes zu einem string könnte einführen, Probleme der Zeichenkodierung, je nach byte-Werte. Ich will nicht die Daten beschädigt werden oder brechen der saite.
Abgesehen, dass, gibt es eine bessere/richtige Methode für immer ein Byte-array als Binär-Datei für den Benutzer?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese sind Dienstprogramme, die ich zum download von Dateien mit cross-browser -. Die nette Sache über dieses ist, dass Sie können tatsächlich legen die
download
Eigenschaft, einen link zu den Namen, die Sie möchten, dass Ihre Dateinamen zu.FYI der mimeType für binäre ist
application/octet-stream
Verwendung:
downloadBlob
(die erste Funktion), dann ruftdownloadURL
so die Argumente widerspiegeln die erste Funktion, nicht die 2.downloadURL(url, filename, mimeType)
innerhalbdownloadBlob
aber die Funktion istdownloadURL(data, filename)
, so es sei denn, es ist die gleiche Magie passiert, dass ich nicht verstehe, es ist nicht passend. Ich denke, es ist ein Fall, der nur das entfernen dermimeType
aber beim ersten Versuch, es zu verstehen, es ist immer noch verwirrend.