IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Lien permettant le download d'un fichier (cross-browser)


Sujet :

JavaScript

  1. #1
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut 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 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.">';


    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();
        }
    }
    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,

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Le seul type de fichier t�l�chargeable de fa�on crossbrowser c'est une archive .zip

    pour les eutres types de fichier il fut du code serveur pour faire un force download
    il existe bien une astuce avec in lien data en base64 maie elle n'est pas full crossbrowser, encore une fois IE �tant � la faute
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut
    Merci pour cette r�ponse SpaceFrog,
    �a veux dire que je suis mal ? ou que �a sent le gaz (l'usine...)

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    pour moi �a veut dire que hormis un zip ou html5 il te faudra du code serveur

    avec html5

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <a href="..." download="fichier.txt">Télécharger le code (.txt)</a>
    mais tout d�pend de ce que tu entends pas crossbrowser ... cf support de html5 http://caniuse.com/#feat=download
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  5. #5
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut
    Citation Envoy� par SpaceFrog Voir le message
    mais tout d�pend de ce que tu entends pas crossbrowser ... cf support de html5 http://caniuse.com/#feat=download
    J'avais bien vue cette page, l'attribut "download" est non support� par IE...
    Par cross-browser c'est juste la compatibilit� FireFox et IE de IE7 � Edge.

    Pour le code cot� serveur, pas le moindre espoirs.... le serveur est passif et stocke des fichiers.

    Je vais essay� de "bricoler" du cot� ajax et API file....

  6. #6
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    L'attribut download sert pr�cis�ment � cela : https://html.spec.whatwg.org/multipa...ding-resources
    The attribute can furthermore be given a value, to specify the file name that user agents are to use when storing the resource in a file system. This value can be overridden by theContent-Disposition HTTP header's filename parameters.
    Si le navigateur ne le supporte pas, pas de secret, il faut modifier la r�ponse c�t� serveur.

  7. #7
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut
    D�sole pour le d�lai de r�ponse mais j'�tais en formation.

    Mon probl�me semble insoluble. Je ne peux faire aucune modification cot� serveur (totaly forbiden ). Le serveur n'a pas de CGI.
    L'attribut "Download" ne fonctionne pas avec IE bref c'est pas gagn�.

    Je cherche car je dois absolument trouver une solution....

    Merci pour vos r�ponses.

  8. #8
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    zip
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  9. #9
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut
    J'ai bien pens� au zip..... mais cela implique de modifier l'extension du fichier.
    Pour �tre complet, le fichier que je souhaite mettre en download est un fichier txt qui est �galement utilis� par un Applet Java qui accepte uniquement les fichiers txt. donc le zip semble hors d'atteinte. Pour simplifier... le serveur fonctionne sur un mainframe donc pas .htaccess et pas de possibilit� de forcer le "content-disposition" du header .

    C'est pour cela que j'ai "bricol�" le code post� en d�but du sujet qui fonctionnais tr�s bien jusqu'a IE10. Mais avec IE 11 no way �a ne fonctionne plus .
    En fait mon besoin : downloader un fichier txt en le faisant passer pour un csv sans toucher au fichier et � la configuration de serveur

  10. #10
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Tu n'as pas besoin de langage serveur pour forcer le t�l�chargement.
    Ce sont les headers qui envoient les informations qui d�terminent comment utiliser les ressources demand�es. Et les headers, c'est le serveur qui les renvoie pas le langage serveur, m�me si celui-ci peut les modifier dynamiquement.
    Donc tu n'as qu'� configurer ton serveur pour qu'il renvoie les bons headers pour ce fichier.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  11. #11
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    ha oui tiens un truc en htaccess par exemple:
    colle tes fichiers dans un r�pertoire et colle dasn ce repertoire un htaccess
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    <FilesMatch "\.txt$">
       ForceType application/octet-stream
       Header set Content-Disposition attachment
    </FilesMatch>
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  12. #12
    Membre �clair� Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    F�vrier 2004
    Messages
    557
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Paaaaaa

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 557
    Par d�faut
    J'ai d�j� fait.... et pens�.

    J'avais forc� le type Mime � "application/octet-stream" (pas mal pour du texte).
    Mais je n'ai pas de possibilit� de forcer le content-disposition pour sp�cifier l'attachement.
    (Ah oui, en plus mainframe => EBCDIC qui est converti en ASCII par le serveur )


    Merci pour toute vos propositions .... je continue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 01/06/2011, 00h34
  2. Download d'un fichier
    Par arno_web dans le forum ASP
    R�ponses: 6
    Dernier message: 19/02/2006, 23h03
  3. Script permettant l'affichage d'un fichier via onmouseover
    Par HNT dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 12/10/2005, 22h58
  4. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 12/08/2004, 07h51
  5. [STRUTS][DOWNLOAD] download d'un fichier via une action
    Par FreshVic dans le forum Struts 1
    R�ponses: 3
    Dernier message: 16/04/2004, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo