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 html : Sélectionner tout - Visualiser dans une fenêtre à part <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 html : Sélectionner tout - Visualiser dans une fenêtre à part <img SRC="../images/txt.png" name="sav" onclick="SaveToDisk(\'./'+filetxt+'\',\''+filecsv+'\');" title="Download data file.">';
Tous cela commençant à ressembler à une usine à gaz, je cherche une solution cross-browser plus "propre" fonctionnant avec les navigateur IE7 à IE11 et FireFox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Si vous avez des suggestions, ou des exemples je suis preneur.
Merci,
Partager