Mit HTML eine Datei erstellen?
Hallo!
Gibt es einen HTML-Code, mit dem man eine Datei erstellen kann?
Zum Beispiel: Ich habe eine Textarea und möchte den Text der darin von dem User eingetragen wurde als "txt"-datei speichern.
5 Antworten
Das ist Quatsch was die hier alle sagen, so eine einfache Funktionalität wie das Downloaden eines Textes als .txt-Datei kann man mit JavaScript easy machen:
<textarea id="text"></textarea>
<button onclick="download(this.previousElementSibling.value)">Download</button>
<script>
//Geyoinkt von https://stackoverflow.com/questions/3665115/how-to-create-a-file-in-memory-for-user-to-download-but-not-through-server
function download(text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', "yourText.txt");
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
</script>
Dann hast du es vlt. falsch eingefügt... Bei dem verlinkten Fiddle funktioniert es schließlich, oder?
Wenn es selbst da nicht funktioniert, vlt. Browser-Cache leeren.
Hast du denn den Script-Teil auch eingefügt? Der ist natürlich wichtig
Ja, das geht, aber nicht ohne Hilfe. Du brauchst eine Serverseitige Sprache, wie PHP als Unterstützung. Eventuell kann man es aber auch per JavaScript und DataURL lösen. PHP wäre da glaube ich aber die einfachere Methode für einen Anfänger
Eventuell kann man es aber auch per JavaScript und DataURL lösen.
Korrekt. Und da man das einfach nur von Stackoverflow yoinken muss, ist es auch nicht sonderlich schwer :D
Ich habe eine Textarea und möchte den Text der darin von dem User eingetragen wurde als "txt"-datei speichern.
Das geht alleine mit HTML nicht. Dafür muss die Eingabe auf dem Server bearbeitet werden. Und dafür brauchst Du eine Programmiersprache wie PHP oder dgl.
Alex
Dafür muss die Eingabe auf dem Server bearbeitet werden.
Nein, geht auch im Frontend mit JavaScript ...
Nein, geht auch im Frontend mit JavaScript
Ja, damit könnte ich die Eingabe die ich selbst in ein Textfeld gemacht habe in eine Text-Datei auf meinem Rechner speichern. Welchen Sinn sollte das haben?
Naja, welchen Sinn sollte das haben, den Text extra ans Backend zu schicken, dort eine Text-Datei erstellen zu lassen, und die dann wieder ans Frontend zu schicken?
Der Sinn davon, solche simplen Aufgaben vom Frontent erledigen zu lassen, liegt doch klar auf der Hand:
- Weniger Code
- Weniger Kompliziert, da keine Hin-Und-Her-Kommunikation etc. nötig ist.
- Spart Bandbreite
- Spart Backend-Ressourcen
Naja, welchen Sinn sollte das haben, den Text extra ans Backend zu schicken, dort eine Text-Datei erstellen zu lassen,
Damit steht diese Datei auf anderen Geräten, für andere User, zur Weiterverarbeitung usw. auf dem Server zur Verfügung.
Wenn ich die in ein Textfeld gemachte Eingabe "hell world" als Textdatei auf einem einzigen Rechner nur für mich haben möchte, benutze ich kein HTML Formular sondern ein beliebiges Programm zur Textverarbeitung. Sei es Word oder Notepad.
Damit steht diese Datei auf anderen Geräten, für andere User, zur Weiterverarbeitung usw. auf dem Server zur Verfügung.
Stimmt, wenn man das so braucht, dann sollte man ihn an einen Server senden.
Wenn ich die in ein Textfeld gemachte Eingabe "hello world" als Textdatei auf einem einzigen Rechner nur für mich haben möchte, benutze ich kein HTML Formular sondern ein beliebiges Programm zur Textverarbeitung. Sei es Word oder Notepad.
Ja, wenn man es so direkt will ist das echt unnötig, aber eventuell soll der Text ja vorher verarbeitet werden.
Zum Beispiel sollen alle Umlaute automatisch durch ae, oe, ue ersetzt werden, oder alle Buchstaben sollen zu Großbuchstaben umgewandelt werden, oder was weiß ich welche verrückten Funktionalitäten sich so mancher User wünscht. Eine hier auf Gutefrage wollte z.B. mal, dass sie Text einfügen kann, und daraus dann alle Chinesischen Zeichen entfernt werden (inklusive Punkt und Komma, die in den Chinesischen Sätzen vorkamen) - Simpel für einen Programmierer mit Regex und ein bisschen Extra-Logik. Für solche Probleme die sich fast nur mit Programmen lösen lassen ist man halt mit Word und Notepad fehl am Platz. Ausserdem kann ein Otto-Normal-PC-Nutzer nichtmal Regex und dergleichen. Aber sowas kann man easy im Frontend machen lassen.
aber eventuell soll der Text ja vorher verarbeitet werden.
Stimmt, dafür gibt es tatsächlich sinnvolle Anwendungen wie zum Beispiel Übersetzung, Code beautyfying oder uglifying usw. die sich mit lokalen Programmen nicht durchführen lassen.
Hast mich überzeugt.
Ich glaube du missverstehst hier etwas. HTML ist keine Programmiersprache, sondern eine Markup Language - eine Sprache, die in der Regel die Struktur und den Inhalt einer Webseite angibt. Mit HTML kannst du zwar sehr wohl ein Eingabefeld erstellen, die Backend-Funktionalität musst du aber mit einer serverseitigen Sprache wie PHP realisieren.
die Backend-Funktionalität musst du aber mit einer serverseitigen Sprache wie PHP realisieren.
Oder mit JavaScript .... Gibt's nicht umsonst ...
Genau - falls die eigegebenen Daten nicht von einem Backend weiterverarbeitet werden müssen, kann man das Ganze auch sehr einfach browserseitig mit JS lösen.
ne , geht nur über eine server seitige sprache . du kannst nur etwas zum server schicken , der speichert es dann z.b. datenbank oder schickt dir da als datei oder oder .
dein nächstes thema wäre also z.b. php zu lernen .
ne , geht nur über eine server seitige sprache
Nein, dafür gibt's JavaScript, damit geht das easy im Frontend
deswegen ja den vorschlag was er sich mal angucken sollte .
Gibt es dafür einen Befehl? Also einen Button einfügen der die Datei speichert.
nö eigentlich nicht . dazu hat der user ja sein browser .
ansonsten such doch mal selber und probier
https://stackoverflow.com/questions/13405129/javascript-create-and-save-file
das kannst ja ausprobieren , browser seite öffnen , was reinschreiben und speichern unter wählen . dann nachgucken was passiert ist .
TechPech1984 Und geht es, den gesamten HTML-Code zu speichern?
wo soll den was gespeichert werden ? beim user oder aufm server ?
Wenn ich das einfüge bekomme ich die Fehlermeldung: