Für Chrome und Firefox habe ich eine reine JavaScript-Methode verwendet.
(Meine Anwendung kann nicht auf ein Paket wie Blob.js
weil er von einer speziellen Maschine bedient wird: einem DSP, in dem ein WWWeb-Server eingepfercht ist und kaum Platz für irgendetwas anderes ist).
function FileSave(sourceText, fileIdentity) {
var workElement = document.createElement("a");
if ('download' in workElement) {
workElement.href = "data:" + 'text/plain' + "charset=utf-8," + escape(sourceText);
workElement.setAttribute("download", fileIdentity);
document.body.appendChild(workElement);
var eventMouse = document.createEvent("MouseEvents");
eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
workElement.dispatchEvent(eventMouse);
document.body.removeChild(workElement);
} else throw 'File saving not supported for this browser';
}
Anmerkungen, Vorbehalte und Ausweichmanöver:
- Ich hatte Erfolg mit diesem Code sowohl in Chrome- als auch in Firefox-Clients, die in Linux- (Maipo) und Windows-Umgebungen (7 und 10) laufen.
- Wenn jedoch
sourceText
größer als ein MB ist, bleibt Chrome manchmal (nur manchmal) in seinem eigenen Download stecken, ohne dass ein Fehler angezeigt wird; bei Firefox ist dieses Verhalten bisher nicht aufgetreten. Die Ursache könnte eine Blob-Beschränkung in Chrome sein. Ehrlich gesagt, ich weiß es einfach nicht; wenn jemand eine Idee hat, wie man das Problem beheben (oder zumindest feststellen) kann, bitte melden. Wenn die Download-Anomalie auftritt, wird beim Schließen des Chrome-Browsers eine Diagnose wie folgt erstellt
- Dieser Code ist nicht mit Edge oder Internet Explorer kompatibel; ich habe es nicht mit Opera oder Safari versucht.