wake-up-neo.com

Wie kann ein Browser einen "Speichern als" -Dialog anzeigen, damit der Benutzer den Inhalt einer Zeichenfolge in einer Datei auf seinem System speichern kann?

Wie kann ich in einem Browser einen "Speichern als" -Dialog anzeigen lassen, damit der Benutzer den Inhalt einer Zeichenfolge in einer Datei auf seinem System speichern kann?

Beispielsweise:

var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");

Daraus ergibt sich etwa Folgendes:

Example

47
MaiaVictor

Für den Fall, dass sich noch jemand wundert ...

Ich habe es so gemacht:

<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a>

ich kann mich nicht an meine Quelle erinnern, aber sie verwendet die folgenden Techniken\Funktionen:

  1. hTML5-Download-Attribut
  2. daten uri's

Fand die Referenz:

http://paxcel.net/blog/savedownload-file-using-html5-javascript-the-download-attribute-2/


BEARBEITEN: Wie Sie den Kommentaren entnehmen können, funktioniert dies in [~ # ~] nicht [~ # ~]

  1. Internet Explorer (funktioniert jedoch in Edge v13)
  2. Safari
  3. iOS Safari
  4. Opera Mini
  5. Android Browser (4.3 und niedriger)

http://caniuse.com/#feat=download

27
Craig Wayne

Hierfür gibt es eine Javascript-Bibliothek, siehe FileSaver.js auf Github

Die Funktion saveAs() sendet jedoch keine reinen Zeichenfolgen an den Browser. Sie müssen sie in blob konvertieren:

function data2blob(data, isBase64) {
  var chars = "";

  if (isBase64)
    chars = atob(data);
  else
    chars = data;

  var bytes = new Array(chars.length);
  for (var i = 0; i < chars.length; i++) {
    bytes[i] = chars.charCodeAt(i);
  }

  var blob = new Blob([new Uint8Array(bytes)]);
  return blob;
}

und rufen Sie dann saveAs auf dem Blob wie folgt auf:

var myString = "my string with some stuff";
saveAs( data2blob(myString), "myString.txt" );

Denken Sie natürlich daran, die oben erwähnte Javascript-Bibliothek in Ihre Webseite aufzunehmen, indem Sie <script src=FileSaver.js>

10
Tomas M

Dies ist mit dieser browserübergreifenden Javascript-Implementierung der Funktion HTML5 saveAs möglich: https://github.com/koffsyrup/FileSaver.js

Wenn Sie nur Text speichern möchten, funktioniert das obige Skript in allen Browsern (einschließlich aller IE-Versionen) und verwendet nur JS.

9
superphonic