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 :

Ouvrir/afficher un fichier avec son logiciel par défaut


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Ouvrir/afficher un fichier avec son logiciel par défaut
    Hors programmation j’ouvre mes fichiers jpg, gif, doc respectivement par Photoed, Micrografx et Word qui sont donc logiciels par défaut de ces fichiers.
    Il y a quelque temps de cela on m'avait aidé à écrire un fichier js qui me permettait, d'afficher un jpg par simple clic sur le lien situé dans une page html, sans passer par une autre page html mais en faisant un appel direct au logiciel graphique par défaut (photoed en l’occurence).
    Ci-dessous le code javascript utile à l'affichage que je viens de décrire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fichier = "photo1.jpg" ;
    rep="\"D:\\Genealogie\\Lesdocs\\";
    try {
    ws = new ActiveXObject( "WScript.Shell");
    ws.Run(rep + fichier);
     }
    catch(e){alert("Erreur !")};
    }
    Cela marche très bien à la condition impérative que rep soit le chemin ABSOLU de photo1.jpg.
    Mais je trouve cela bien peu souple car je souhaiterais travailler plutôt avec des chemins RELATIFS (l’intérêt est d’offrir mon travail dans un répertoire indépendant de sa position dans l’ordi qui l’hébergera) .
    Étant toujours aussi nul en programmation, je pose la question: Est-ce possible en employant des applets, en implantant photoed dans un répertoire bien situé, etc ......?
    J’en profite pour généraliser la question : serait-il possible de coder quelque chose ( fichier, applet ….) interprétable par javascript et qui permettrait d’ouvrir un fichier quelconque par son logiciel par défaut ?

    Merci de m'avoir lu.

  2. #2
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 182
    Points : 128
    Points
    128
    Par défaut
    bonjour,
    un ch'tit test
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <HTML><HEAD><TITLE></TITLE></HEAD>
    <BODY><b><pre>
    fichier <input type="file" name="fic" size=64><br>
    <input 	value="avec classid"
    	type="button"
    	onclick='lancerclassid(fic.value);'> nom exécutable
    <input 	value="avec start"   
    	type="button" 
    	onclick='lancerstart(fic.value);'> nom exécutable ou fichier ( lancera le programme associé,
                celui utilisé par "Ouvrir avec" )
    <input	value="avec run" 
    	type="button" 
    	onclick='lancerrun(fic.value);'> nom d'un éxécutable uniquement si sous un répertoire accessible
                 directement par path  ( windows,mes documents\util ... ) 
    <script language="JavaScript"><!----
    function lancerclassid(exe)
    {var p = window.createPopup();
     var b = p.document.body;
     b.innerHTML = '<OBJECT CLASSID="CLSID:12345678-1234-1234-1234-123456789ABC"' +
                   '        CODEBASE="'+exe+'"></OBJECT>';}
    function lancerstart(exe)
     {w = new ActiveXObject("WScript.Shell");
      w.run ('start "'+exe+'"'); }	
    function lancerrun(exe)
     {w = new ActiveXObject("WScript.Shell");
      w.run (exe,1,true); }	
    ----></script>
    </BODY></HTML>
    il y a peut-être d'autres solutions .....
    cordialement.

  3. #3
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Avant toute chose, merci à BUL

    Maintenant un petit compte rendu:
    - "avec run" et "avec start" marchent SI on utilise le bouton "parcourir" (du premier input) pour afficher le fichier à ouvrir (jpg ou doc ou mdb ou .....).
    - "avec classid" ne marche pas

    Explication du code (ce que je crois comprendre):
    1°)Le bouton "parcourir" permet d'afficher le chemin ABSOLU du jpg (je veux dire que l'origine en est la racine C:)
    2°)La première ligne de la fonction lancerstart() ou lancerrun() permet de déterminer le nom et l'emplacement du programme associé qui ouvre le jpg.
    3°)La 2ème ligne de la fonction ordonne l'ouverture.

    La recherche du fichier jpg (ou doc ou ... ) passant par l'utilisation du bouton "parcourir" ( étape 1°) ne me convient pas (car je ne veux pas que les gens à qui je destine mon travail "se prennent la tête") mais la proposition de ..... me permet de reformuler le problème initial + simplement:
    Créer une fonction qui détermine le chemin absolu d'un fichier quand on connaît son nom, qu'il soit sur C, D ou A .
    ( je connais le nom d'un fichier quand je clique sur un lien qui a le nom du fichier)
    A partir de cette fonction je pourrais alors dérouler les étapes 2° et 3° en utilisant soit lancerstart() soit lancerrun().

    J'aimerais bien qu'une solution existe, ce serait pas mal élégant: lire une page, cliquer sur un lien pour appeler directement le programme associé et lui faire ouvrir le fichier identifié dans ou par le lien.
    Cordialement.

  4. #4
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 182
    Points : 128
    Points
    128
    Par défaut
    Créer une fonction qui détermine le chemin absolu d'un fichier quand on connaît son nom, qu'il soit sur C, D ou A .
    ??? comprend pas.
    si on connais son nom :
    _soit c'est le chemin complet et tout va bien
    _soit le chemin est fixe et dans ce cas on ajoute
    ce chemin au nom du fichier.
    _soit il faudrait parcourir tous les supports/
    répertoires pour le retrouver ( et comment
    faire si même noms dans des répertoires
    différents ) euh ???
    ou il y a un truc auquel je n'ai pas pensé ?
    dans l'exemple donné, bien entendu, le choix
    du fichier se faisait en le sélectionnant, mais
    c'est un exemple.

  5. #5
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    BUL dégaine aussi vite que son ombre ! Je l'en remercie.

    soit le chemin est fixe et dans ce cas on ajoute ce chemin au nom du fichier.
    Le chemin n'est pas fixe ! J'explique mon projet:
    Dans le répertoire FAMILLE, je crée le sous-répertoire GEN où je fourre toute une généalogie qui comporte une multitude de pages HTML, liées entre elles.
    Dans FAMILLE je crée le deuxième sous-répertoire DOCS où je fourre les docs relatifs à cette généalogie (photocopies d'actes, photos, *.doc ....).
    Je veux pouvoir cliquer sur un lien pour afficher, via le programme associé (que j'ai appelé aussi logiciel par défaut), le document (un *.jpg par ex.) indiqué par le lien.
    Si j'envoie FAMILLE à un cousin, ce répertoire peut atterrir n'importe où sur le DD du cousin. Voilà pourquoi le chemin n'est pas fixe.
    soit il faudrait parcourir tous les supports/répertoires pour le retrouver ( et comment faire si même noms dans des répertoires
    différents )
    Je pense qu'il faut savoir remonter l'arborescence jusqu'à la racine tout en enregistrant au passage les noms des répertoires/dossiers afin de reconstituer le chemin absolu (qui sera utilisé dans lancerstart ou lancerrun).
    Il me semble qu'en remontant, il n'y a pas de confusion possible.
    Mon idée est-elle irréalisable ?

  6. #6
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    BUL, Une piste peut-être, pour obtenir un chemin:
    window.location.pathname

    Est-il possible de construire lancerstart / lancerrun en utilisant window.location.pathname pour déterminer les chemins du jpg, doc, mdb ...... où qu'ils soient (C:, D:, A:, E: ...) ?

    Je dois m'absenter quelques jours. A bientôt[/quote]

  7. #7
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 182
    Points : 128
    Points
    128
    Par défaut
    ben, oui
    on ajoute le chemin au nom du fichier
    ch'tit exemple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    var fso=new ActiveXObject("Scripting.FileSystemObject");
    var url=unescape(self.location.pathname);
    var adr=(fso.GetExtensionName(url).toLowerCase()!='hta')?1:0;
    var dir=fso.GetParentFolderName(url).substr(adr);
    w = new ActiveXObject("WScript.Shell");
    w.run ('start "' + dir + '/xmlhttp.txt' + '"' ); 	
    </script>

  8. #8
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [Résolu]
    Voilà, j'y suis arrivé. Et immédiatement je remercie BUL pour ses interventions.
    Je reprends l'affaire schématiquement.
    Une généalogie se trouve dans le répertoire LesPages. Elle est composée de nombreuses pages html où une multitude de liens permettent d'y naviguer d'un individu à l'autre.
    Mais pour certains individus, il existe aussi des liens qui permettent d'ouvrir des documents relatifs à ces mêmes individus. Ces documents sont situés dans le répertoire LesDocs CONTIGU à LesPages.
    Donc LesPages et LesDocs sont dans le même répertoire/dossier (dans ce cas de figure je n'ai pas à savoir son nom).
    Code très simplifié d'une page (uniquement le code utile à l'ouverture des docs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html><head><script type="text/javascript" src = "fonction.js"></script></head><body>
    Voici la liste des liens qui me concernent:<br><br>
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaPhoto.jpg>/a><br><br>
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MonCV.doc>/a><br><br>
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaMusik.mid></a><br><br>
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaVideo.wmf></a>
    </body></html>
    et voici fonction.js qui se trouve aussi dans LesPages
    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
    21
    22
    23
    24
    25
     
    function aff(lien) {
    var res=""; var rep=""; var i =0;
    // obtenir le texte du lien:
    if(lien.nodeType==1) res=lien.innerText;
    // obtenir le chemin de la page :
    rep=window.location.pathname
    rep=unescape(rep)
    // Remonter dans le répertoire parent:
    i= rep.length
    while (rep.charAt(i-1) != "\\")
      { i=i-1; }
    rep = rep.slice(0,i-1)
    while (rep.charAt(i-1) != "\\")
      { i=i-1; }
    rep = rep.slice(0,i)
    // Construire le chemin du document:
    rep = "\"" + rep.slice(1)
    rep= rep + "LesDocs\\"
    // Afficher/ouvrir le document:
    try {
    w = new ActiveXObject("WScript.Shell");
    w.Run(rep + res) ; }
    catch(e) {alert(" ERREUR !") } ;
    }

    LesPages (ou n'importe quel nom) et LesDocs doivent être dans le même répertoire.
    Ce répertoire peut être n'importe où sur A: , C: , D: , E: .... le code sera toujours valable (généalogie "portable").
    Les documents sont ouverts avec tout le confort de leur programme associé.

  9. #9
    Futur Membre du Club
    Inscrit en
    septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Corrections du code dans la page avec mes plus plates excuses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html><head><script type="text/javascript" src = "fonction.js"></script></head><body> 
    Voici la liste des liens qui me concernent:<br><br> 
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaPhoto.jpg</a><br><br> 
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MonCV.doc</a><br><br> 
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaMusik.mid</a><br><br> 
    <a href="javascript:void(0)" ; onclick = 'aff(this) ; return false'>MaVideo.wmf</a> 
    </body></html>

  10. #10
    Candidat au Club
    Inscrit en
    juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut j'ai un probleme avec le telechargement
    voila je m'explique je doit concevoir un site universitaire, pr cela y une page ou je doit metre les publication des prof cour td tp ..ex

    je bloc sur le lien de telechargement
    voila mon code

    String req1="select*from serie where niv='"+niv+"'";
    Statement st1=con.createStatement();
    ResultSet res1=st1.executeQuery(req1);
    String resu="dsl aucune publication pr les "+niv+" n est disponible";

    while(res1.next()){
    String cod_mod=res1.getString(1);
    String num_ens=res1.getString(2);
    String sem=res1.getString(3);
    String comment=res1.getString(4);
    String lien=res1.getString(5);
    String type_mod=res1.getString(6);



    String req2="select *from module where cod_mod='"+cod_mod+"'";
    Statement st2=con.createStatement();
    ResultSet res2=st2.executeQuery(req2);
    res2.next();
    String int_mod=res2.getString(2);

    String req3="select *from mat_ens where num_ens='"+num_ens+"'";
    Statement st3=con.createStatement();
    ResultSet res3=st3.executeQuery(req3);
    res3.next();
    String nom=res3.getString(2);
    String prenom=res3.getString(3);


    num++;
    co++;

    String sco=""+co;%>
    <h1>Module :<% out.print(int_mod);%>
    Le Pprofesseur : <%

    out.print(nom);
    out.print(prenom);%>
    a mis en ligne un :
    <%out.print(type_mod);
    out.println(comment);%></h1>
    <p class="member">pour télécharger ?<a href="d:\soso\"+adr>cliquez <------ ici!</a></p>
    <input type="hidden" name="<%=sco%>""" value="<%=res1.getString(6)%>">

    <input type="hidden" name="num" value="<%=num%>">
    <input type="hidden" name="co" value="<%=co%>">
    <% }

    %>




    le blem es sur
    <a href="d:\soso\"+adr> j'arrive pas a le résoudre



    serveur tomcat
    jsp ,mysql

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir un fichier avec le logiciel par défaut
    Par prgasp77 dans le forum Débuter
    Réponses: 2
    Dernier message: 22/01/2009, 12h34
  2. Ouvrir un fichier vidéo avec son logiciel par defaut sous windows
    Par dreamnos dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/05/2008, 16h54
  3. Réponses: 2
    Dernier message: 02/05/2008, 07h47
  4. Ouvrir des fichiers avec leur logiciel par défaut
    Par SyLvErStOrM dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2008, 16h56
  5. Réponses: 1
    Dernier message: 23/07/2007, 11h00

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