webentwicklung-frage-antwort-db.com.de

Wie kann JavaScript in einer lokalen Datei gespeichert werden?

Es gibt bereits eine Lösung für das Schreiben von JSON-Dateien online, aber ich möchte die Json-Datei lokal speichern. Ich habe versucht, dieses Beispiel zu verwenden: http://jsfiddle.net/RZBbY/10/ Es wird erstellt einen Link zum Herunterladen der Datei mit diesem Aufrufa.attr('href', 'data:application/x-json;base64,' + btoa(t.val())).show();Wird die Datei lokal gespeichert, anstatt einen herunterladbaren Link bereitzustellen? Es gibt andere Arten der Konvertierung als data:application/x-json;base64?

Hier ist mein Code:

<!DOCTYPE html>
<head> 
    <meta charset="utf-8">
    <title>jQuery UI Sortable - Default functionality</title>

    <link rel="stylesheet" href="http://jqueryui.com/themes/base/jquery.ui.all.css">
    <script src="http://jqueryui.com//jquery-1.7.2.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.mouse.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.sortable.js"></script>
        <script src="http://jqueryui.com/ui/jquery.ui.accordion.js"></script>
    <link rel="stylesheet" href="http://jqueryui.com/demos/demos.css">        
    <meta charset="utf-8">
    <style>a { font: 12px Arial; color: #ac9095; }</style>
<script type='text/javascript'>
$(document).ready(function() {
var f = $('form'), a = $('a'),
    i = $('input'), t = $('textarea');

$('#salva').click(function() {
    var o = {}, v = t.val();

    a.hide();//nasconde il contenuto
    i.each(function() { 
    o[this.name] = $(this).val(); });
    if (v === '') {
        t.val("[\n " + JSON.stringify(o) + " \n]")         
    }
    else {
        t.val(v.substr(0, v.length - 3));
        t.val(t.val() + ",\n " + JSON.stringify(o) +  " \n]")  
    }
});
});

$('#esporta').bind('click', function() {
    a.attr('href', 'data:application/x-json;base64,' + btoa(t.val())).show();

});
</script>
</head>
<body>
    <form>
        <label>Nome</label> <input type="text" name="nome"><br />
        <label>Cognome</label> <input type="text" name="cognome">
        <button type="button" id="salva">Salva</button>
    </form>        

    <textarea rows="10" cols="60"></textarea><br />
    <button type="button" id="esporta">Esporta dati</button>
    <a href="" style="display: none">Scarica Dati</a>
</body>
</html>
11

Sie sollten das download-Attribut und die window.URL-Methode überprüfen, da das download-Attribut dem Daten-URI nicht gefällt .. _. Dieses -Beispiel von Google ist so ziemlich das, was Sie versuchen.

12
Calvein

Es ist nicht möglich, Dateien lokal zu speichern, ohne den lokalen Client (Browser-Computer) zu involvieren, da dies eine große Gefahr für den Client-Computer darstellen kann. Sie können einen Link verwenden, um diese Datei herunterzuladen. Wenn Sie etwas wie Json-Daten auf dem lokalen Computer speichern möchten, können Sie LocalStorage verwenden, das von den Browsern bereitgestellt wird., Web Storage

9
Adil

Es hängt alles davon ab, was Sie mit "lokal speichern" erreichen möchten. Möchten Sie dem Benutzer das Herunterladen der Datei gestatten? dann ist <a download> der Weg zu gehen. Möchten Sie es lokal speichern, damit Sie Ihren Anwendungsstatus wiederherstellen können? Dann möchten Sie vielleicht die verschiedenen Optionen von WebStorage kennenlernen. Speziell localStorage oder IndexedDB . Mit dem FilesystemAPI können Sie lokale virtuelle Dateisysteme erstellen, in denen beliebige Daten gespeichert werden können.

3
rodneyrehm

Die meisten verachten Flash, aber es ist eine praktikable Option, um die Funktionen "Speichern" und "Speichern unter" in Ihrer HTML-/Javascript-Umgebung bereitzustellen. 

Ich habe ein Widget mit dem Namen "OpenSave" erstellt, das diese Funktionalität hier zur Verfügung stellt:

http://www.gieson.com/Library/projects/utilities/opensave/

-Mike

2
bob

Ihre real - Frage lautet also: "Wie kann JavaScript in einer lokalen Datei gespeichert werden?"

Werfen Sie einen Blick auf http://www.tiddlywiki.com/

Sie speichern ihre HTML-Seite lokal, nachdem Sie sie intern geändert haben.

[UPDATE 2016.01.31]

TiddlyWiki Originalversion wurde direkt gespeichert. Es war ziemlich schön und wurde in einem konfigurierbaren Sicherungsverzeichnis mit dem Zeitstempel als Teil des Sicherungsdateinamens gespeichert.

Die aktuelle Version von TiddlyWiki lädt es einfach als Dateidownload herunter. Sie müssen Ihr eigenes Backup-Management durchführen. :(

[ENDE OF UPDATE

Der Trick ist, Sie müssen die Seite als file: // nicht als http: // öffnen, um lokal speichern zu können.

Die Sicherheit Ihres Browsers lässt Sie nicht im lokalen System von _someone_else speichern, sondern nur in Ihrem eigenen, und selbst dann ist es nicht trivial.

-Jesse

1
Jesse Chisholm

Basierend auf http://html5-demos.appspot.com/static/a.download.html :

var fileContent = "My epic novel that I don't want to lose.";
var bb = new Blob([fileContent ], { type: 'text/plain' });
var a = document.createElement('a');
a.download = 'download.txt';
a.href = window.URL.createObjectURL(bb);
a.click();

Geändert die ursprüngliche Geige: http://jsfiddle.net/9av2mfjx/

1
Stanislav

Wenn Sie FireFox verwenden, können Sie die File HandleAPI verwenden

https://developer.mozilla.org/en-US/docs/Web/API/File_Handle_API

Ich hatte es gerade getestet und es funktioniert!

0
Kbdavis07