Mit HTML eine Datei erstellen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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>

https://jsfiddle.net/94mwbpgq/

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Modellbahni 
Fragesteller
 31.03.2022, 12:12

Wenn ich das einfüge bekomme ich die Fehlermeldung:

Uncaught ReferenceError: download is not defined at HTMLButtonElement.onclick
0
MrAmazing2  31.03.2022, 12:14
@Modellbahni

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

0

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

MrAmazing2  31.03.2022, 10:47
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

3
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

MrAmazing2  31.03.2022, 10:49
Dafür muss die Eingabe auf dem Server bearbeitet werden.

Nein, geht auch im Frontend mit JavaScript ...

0
EinAlexander  31.03.2022, 10:53
@MrAmazing2
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?

0
MrAmazing2  31.03.2022, 10:55
@EinAlexander

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
0
EinAlexander  31.03.2022, 10:59
@MrAmazing2
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.

0
MrAmazing2  31.03.2022, 11:08
@EinAlexander
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.

0
EinAlexander  31.03.2022, 11:22
@MrAmazing2
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.

1

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.

MrAmazing2  31.03.2022, 10:48
die Backend-Funktionalität musst du aber mit einer serverseitigen Sprache wie PHP realisieren.

Oder mit JavaScript .... Gibt's nicht umsonst ...

1
HubertGibtHilfe  31.03.2022, 15:39
@MrAmazing2

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.

1

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 .

Modellbahni 
Fragesteller
 31.03.2022, 09:45

Ähh

0
Modellbahni 
Fragesteller
 31.03.2022, 09:47

Beim User auf dem PC

0
TechPech1984  31.03.2022, 09:49
@Modellbahni

das kannst ja ausprobieren , browser seite öffnen , was reinschreiben und speichern unter wählen . dann nachgucken was passiert ist .

0
MrAmazing2  31.03.2022, 10:48
ne , geht nur über eine server seitige sprache

Nein, dafür gibt's JavaScript, damit geht das easy im Frontend

0