Pour Chrome et Firefox, j'ai utilisé une méthode purement JavaScript.
(Mon application ne peut pas faire usage d'un paquet tel que Blob.js
parce qu'il est servi à partir d'un moteur spécial : un DSP avec un serveur WWWeb fourré dedans et peu de place pour quoi que ce soit).
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';
}
Notes, mises en garde et mots croisés :
- J'ai eu du succès avec ce code dans les clients Chrome et Firefox fonctionnant dans des environnements Linux (Maipo) et Windows (7 et 10).
- Toutefois, si
sourceText
est supérieure à un Mo, Chrome reste parfois (seulement parfois) bloqué dans son propre téléchargement sans aucune indication d'échec ; Firefox, jusqu'à présent, n'a pas présenté ce comportement. La cause pourrait être une limitation des blobs dans Chrome. Franchement, je n'en sais rien ; si quelqu'un a une idée de la façon de corriger (ou au moins de détecter) ce problème, merci de la poster. Si l'anomalie de téléchargement se produit, lorsque le navigateur Chrome est fermé, il génère un diagnostic tel que
- Ce code n'est pas compatible avec Edge ou Internet Explorer ; je n'ai pas essayé Opera ou Safari.
7 votes
A été une copie exacte de Créez un fichier en mémoire pour que l'utilisateur puisse le télécharger, sans passer par le serveur. depuis des années.