Ich möchte Daten mit JavaScript in eine vorhandene Datei schreiben. Ich möchte es nicht auf der Konsole drucken. Ich möchte tatsächlich Daten schreiben an abc.txt
. Ich habe viele beantwortete Fragen gelesen, aber überall dort, wo sie auf der Konsole drucken. Irgendwann haben sie Code gegeben, aber er funktioniert nicht. Kann mir bitte jemand helfen, wie man tatsächlich Daten in eine Datei schreibt?
Ich habe den Code verwiesen, aber er funktioniert nicht: Es gibt einen Fehler:
Nicht erfasster TypeError: Unzulässiger Konstruktor
auf Chrom und
SecurityError: Der Vorgang ist unsicher.
auf Mozilla
var f = "sometextfile.txt";
writeTextFile(f, "Spoon")
writeTextFile(f, "Cheese monkey")
writeTextFile(f, "Onion")
function writeTextFile(afilename, output)
{
var txtFile =new File(afilename);
txtFile.writeln(output);
txtFile.close();
}
Können wir also tatsächlich Daten nur mit Javascript oder NICHT in eine Datei schreiben?
javascript
html
Pareshm
quelle
quelle
Antworten:
Einige Vorschläge dazu -
quelle
Sie können Dateien im Browser mit
Blob
und erstellenURL.createObjectURL
. Alle neueren Browser unterstützen dies .Sie können die von Ihnen erstellte Datei nicht direkt speichern, da dies zu massiven Sicherheitsproblemen führen würde. Sie können sie jedoch als Download-Link für den Benutzer bereitstellen. Sie können einen Dateinamen über das
download
Attribut des Links in Browsern vorschlagen , die das Download-Attribut unterstützen. Wie bei jedem anderen Download hat der Benutzer, der die Datei herunterlädt, das letzte Wort über den Dateinamen.Hier ist ein Beispiel , das diese Technik verwendet, um beliebigen Text aus a zu speichern
textarea
.Wenn Sie den Download sofort starten möchten, anstatt den Benutzer auf einen Link klicken zu müssen, können Sie Mausereignisse verwenden, um einen Mausklick auf den Link zu simulieren, wie es die Antwort von Lifecube getan hat. Ich habe ein aktualisiertes Beispiel erstellt , das diese Technik verwendet.
quelle
URL
). Das Festlegen des Dateinamens funktioniert in Safari nicht, da dasdownload
Attribut noch nicht implementiert wurde .\n
, um neue Zeilen darzustellen, wie dies bei UNIX-Programmen der Fall ist . Sie sehen es wahrscheinlich in einem Windows-Programm wie Notepad, das das\n
Zeichen nicht als neue Zeile rendert . Wenn Sie möchten, dass die Zeilenumbrüche in Notepad und einigen anderen Windows-Programmen korrekt gerendert werden,Blob
ersetzen Sie sie\n
durch\r\n
:text = text.replace(/\n/g, '\r\n')
.mouseover
über den Link zu generieren , aber je nachdem, wie viel Verarbeitung sie macht, funktioniert das möglicherweise nicht besonders gut.Wenn Sie über Browser-Javascript sprechen, können Sie aus Sicherheitsgründen keine Daten direkt in die lokale Datei schreiben. Mit der neuen HTML 5-API können Sie nur Dateien lesen.
Wenn Sie jedoch Daten schreiben und dem Benutzer das Herunterladen als Datei in die lokale Datei ermöglichen möchten. Der folgende Code funktioniert:
um es zu benutzen:
download('the content of the file', 'filename.txt', 'text/plain');
quelle
Die obige Antwort ist nützlich, aber ich habe Code gefunden, mit dem Sie Textdateien direkt beim Klicken auf die Schaltfläche herunterladen können. In diesem Code können
filename
Sie auch nach Belieben ändern . Es ist eine reine Javascript-Funktion mit HTML5. Funktioniert bei mir!quelle
createObjectURL
. Im Gegensatz zu den meisten Dingen in JS werden die Objekte, die Sie damit erstellen, nicht automatisch durch Müll gesammelt, wenn keine Verweise mehr darauf vorhanden sind. Sie werden nur beim Schließen der Seite gesammelt. Da SieURL.revokeObjectURL()
diesen Code nicht verwenden, um den beim letzten Aufruf verwendeten Speicher freizugeben, liegt ein Speicherverlust vor. Wenn der BenutzersaveTextFile
mehrmals anruft , belegt er weiterhin immer mehr Speicher, da Sie ihn nie freigegeben haben.Versuchen
quelle
Für den Fall, dass es nicht möglich ist, die neue
Blob
Lösung zu verwenden, die mit Sicherheit die beste Lösung in einem modernen Browser ist, ist es immer noch möglich, diesen einfacheren Ansatz zu verwenden, der übrigens eine Begrenzung der Dateigröße aufweist:quelle
Verwenden Sie den Code des Benutzers @ nutzloser-Code oben ( https://stackoverflow.com/a/21016088/327386 ), um die Datei zu generieren. Wenn Sie die Datei automatisch herunterladen möchten, übergeben Sie die
textFile
soeben generierte an diese Funktion:quelle
Ich habe hier gute Antworten gefunden, aber auch einen einfacheren Weg gefunden.
Die Schaltfläche zum Erstellen des Blobs und des Download-Links kann in einem Link kombiniert werden, da das Link-Element ein Onclick-Attribut haben kann. (Das Gegenteil scheint nicht möglich zu sein. Das Hinzufügen eines href zu einer Schaltfläche funktioniert nicht.)
Sie können den Link als Schaltfläche mit gestalten
bootstrap
formatieren, bis auf das Styling immer noch reines Javascript verwenden.Durch das Kombinieren der Schaltfläche und des Download-Links wird auch der Code reduziert, da weniger davon hässlich sind
getElementById
Aufrufe benötigt werden.In diesem Beispiel ist nur ein Klick erforderlich, um den Text-Blob zu erstellen und herunterzuladen:
quelle
Ja es ist möglich Hier ist der Code
quelle