Lien permettant le download d'un fichier (cross-browser)
Bonjour,
Je dois générer un lien permettant le download un fichier txt mais en modifiant sont extension en csv lors du transfert.
J'ai comme contraintes :
aucun script coté serveur.
Les scripts sont tous en JavaScript donc coté client,
Pas de Jquery ou framework, du JavaScript pur uniquement
Modification de l'extension du fichier (de txt à csv)
Concernant les navigateurs Chromes et FF aucune difficulté, la génération d'un simple lien HTML fonctionne bien
Code:
<a href="./'UnFichierTxt'" title="Download data file." download="'+filecsv+'"><img src="../images/csv.png"></a>';
Pour IE j'ai implémenté la fonction si dessous que marchait "bien". Mais avec IE11 ça ne fonctionne plus. Apparemment execCommand est bloqué.
Code:
<img SRC="../images/txt.png" name="sav" onclick="SaveToDisk(\'./'+filetxt+'\',\''+filecsv+'\');" title="Download data file.">';
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function SaveToDisk(fileURL, fileName) {
// for non-IE
if (!window.ActiveXObject) {
var save = document.createElement('a');
save.href = fileURL;
save.target = '_blank';
save.download = fileName || fileURL;
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0,
false, false, false, false, 0, null);
save.dispatchEvent(evt);
(window.URL || window.webkitURL).revokeObjectURL(save.href);
}
else if ( !! window.ActiveXObject && document.execCommand) {
var _window = window.open(fileURL, "_blank");
_window.document.close();
_window.document.execCommand('SaveAs', true, fileName || fileURL)
_window.close();
}
} |
Tous cela commençant à ressembler à une usine à gaz, je cherche une solution cross-browser plus "propre" fonctionnant avec les navigateur IE7 à IE11 et FireFox.
Si vous avez des suggestions, ou des exemples je suis preneur.
Merci,