datei erstellen
vlad
- javascript
0 Brotherhood of Tom0 Vinzenz Mai0 vlad0 Vinzenz Mai0 ChrisB
Hi,
kann ich in einer JAvascript-funktion eine Datei erstellen, die dem benutzer zum Download, also mittels speichern-Dialog angeboten wird?
ICh möchte in einer JAvascript-Funktion einen Test zusammenbauen, der dann vom benutzer einfach abgespeichert werden kann, ohne dass extra aus einem Feld Text rauskopiert werden muss und in einem Editor separat gespeichert werden muss.
Gruß
Vlaad
JavaScript kann keine Dateien schreiben - außer Cookies.
JavaScript kann keine Dateien schreiben - außer Cookies.
Es selbst soll ja nix speichern. Lies bitte die Frage nochmal.
Lies bitte die Frage nochmal.
nee danke, ich will ja nichts von Dir.
Hallo,
kann ich in einer JAvascript-funktion eine Datei erstellen, die dem benutzer zum Download, also mittels speichern-Dialog angeboten wird?
siehe http://forum.de.selfhtml.org/archiv/2012/1/t208853/#m1420798.
Ich nutzte was serverseitiges, das könnte heutzutage durchaus auch Javascript sein.
Freundliche Grüße
Vinzenz
siehe http://forum.de.selfhtml.org/archiv/2012/1/t208853/#m1420798.
Ich nutzte was serverseitiges, das könnte heutzutage durchaus auch Javascript sein.
Danke, das sieht ja erst mal so aus, wie dass, was ich suche.
Es funktioniert auch prinzipiell mit allerdings 3 Problemen:
1. er erstellt jedesmal einen Iframe. Den kann man vermutlich unsichtbar machen und bei mehrmaligen klicks recyclen.
oder man benutzt window.open.
2. da ich Textdateien erstellen will, öffnet er die Datei im erstellten Iframe. hier könnte ich einen nicht darstellbaren Mime-Typ nehmen und hoffen, dass der, der den Button klickt, kein Plugin für ebend jenen Mime-Typ hat.
Gibts einen Typen, der sich speziell anbieten würde?
3. Der Dateiname ist äußerst komisch. Hier habe ich noch keinen Würgaround gefunden.
gibts eigentlich stadnard-javascript Funktionen für die Base64 en/decodierung?
schließlich muss die sowiso jeder browser enthalten.
Der code sieht jetzt folgender maßen aus.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
<script type="text/javascript">
function getFileData()
{
return 'SGFsbG8sIGRpZXMgaXN0IGVpbiANCm1laHJ6ZWlsaWdlciBUZXN0dGV4dA==';
}
function genFile(e)
{
var url = "data:application/octet-stream;base64,"+getFileData();
// var ifr=document.createElement("iframe");
// ifr.src=url;
// e.parentNode.appendChild(ifr);
window.open(url,"download File");
return true;
}
</script>
</head>
<body>
<button onclick="genFile(this)">Datei erzeugen</button>
</body>
</html>
Hallo,
gibts eigentlich stadnard-javascript Funktionen für die Base64 en/decodierung?
nach meinem Wissensstand: nein. Es gibt browserspezifische Umsetzungen, z.B. btoa und atob.
Selbstverständlich gibts es das auch als jQuery-Plugin und dessen Original ...
Freundliche Grüße
Vinzenz
Hi,
Es funktioniert auch prinzipiell mit allerdings 3 Problemen:
- er erstellt jedesmal einen Iframe. Den kann man vermutlich unsichtbar machen und bei mehrmaligen klicks recyclen.
oder man benutzt window.open.
Oder schlicht und einfach location.href = "data:..."
- da ich Textdateien erstellen will, öffnet er die Datei im erstellten Iframe. hier könnte ich einen nicht darstellbaren Mime-Typ nehmen und hoffen, dass der, der den Button klickt, kein Plugin für ebend jenen Mime-Typ hat.
Gibts einen Typen, der sich speziell anbieten würde?
application/octet-stream - kennzeichnet unspezifizierte Binärdaten. Sollte bei Text in ASCII oder UTF-8 kodiert ebenfalls funktionieren.
- Der Dateiname ist äußerst komisch. Hier habe ich noch keinen Würgaround gefunden.
Da sehe ich bei Nutzung von data-URIs auch keinen. Aber den vorgeschlagenen Dateinamen kann der Nutzer im Download-Dialog ja problemlos ändern.
gibts eigentlich stadnard-javascript Funktionen für die Base64 en/decodierung?
schließlich muss die sowiso jeder browser enthalten.
Nö, muss nicht.
Die Daten müssen nicht Base64-kodiert werden, URL-Kodierung (encodeURIComponent) tut's auch.
MfG ChrisB