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

Langage PHP Discussion :

[PHP-JS] Executer un fichier local


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut [PHP-JS] Executer un fichier local
    Bonjour !

    Je suis encore un débutant et je me suis mis a programmer un site en php localement, avec une base de donnée pour référencer mes albums de musique.

    Donc pour ajouter un album ça fonctionne mais j'aimerai aussi avoir la possibilité d'executer le fichier mp3 depuis l'interface en php.

    j'ai essayé comme cela:

    <a href="musique/<?php echo ($donnees['nom']);?>.mp3">Lancer</a>

    mais le problème que j'ai s'est qu'il télécharge le fichier dans un dossier temporaire se qui me prends 10minutes.

    Est-il possible d'executer directement ? Sans devoir télécharger un fichier que j'ai deja sur ma machine ?

    Merci d'avance pour votre aide !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Le problème n'est pas typique PHP en fait.

    Si tu fais un simple lien sur un fichier .mp3, chaque poste client qui va se connecter à ton interface va avoir un comportement différent. Je parle surtout pour windows qui est le système que je connais le plus, mais donc pour windows, le comportement dépendra de l'association (et du comportement) par défaut paramétré pour les MP3.
    Pour lire en streaming du MP3 sur un site sans avoir les contraintes de chaque navigateur (quelle est le logiciel par défaut, quelle est le comportement par défaut, etc...), le mieux est de passer par du flash...

    Une anim flash 'basic' (je suppose qu'on doit pouvoir trouver pas mal de lecteur MP3 en flash sur le net) à laquelle on enverra le nom du fichier en paramètre. Ca demande donc aussi quelques (petites) connaissances en actionscript.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    le flash je ne connait pas du tout,

    mais par exemple si j'execute le fichier sans passer par l'interface ya pas ce genre de problème. Y aurait-il un autre moyen en php ?

    Merci pour ta réponse !

  4. #4
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    si c'est pour toi, chez-toi... l'élément non standard embed par javascript est assez universel sous windows.

    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
     
    <?php
      $donnees['nom']='BB King - Shotgun Blues';
    ?>
     
    <script type='text/javascript'>
     <!--//
      function play(music) {
        document.getElementById('player').innerHTML='<embed src="'+music+'" height="25">';
        return false;
      }
     //-->
    </script>
     
    <div id="player">
    </div>
     
    <a href="#" onclick="return play('musique/<?php echo ($donnees['nom']);?>.mp3')"><?php echo ($donnees['nom']);?></a>

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Si le serveur web est ton poste de travail, et que tu es le seul a utiliser ton interface, tu peux toujours faire un system() de ton fichier mp3.

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Merci daniel61, mais je ne connais pas le java, Y'a t il une possibilité pour que la musique s'ouvre dans le lecteur Windows Media Player mais en dehors de la page ? car la le lecteur est intégré dans la page

    Pour Raideman, j'utilise mon interface sur un petit réseau local

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Dans son code, tu places cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type='text/javascript'>
     <!--//
      function play(music) {
        document.getElementById('player').innerHTML='<embed src="'+music+'" height="25">';
        return false;
      }
     //-->
    </script>
    dans le <head> de ta page par exemple, ou n'importe ou d'ailleurs.

    En suite la partir <div id="player"></div> doit etre placé la ou tu veux placer la lecture de ton fichier (graphiquement parlant).


    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="return play('musique/<?php echo ($donnees['nom']);?>.mp3')"><?php echo ($donnees['nom']);?></a>
    Cette partie est le lien qui va permettre l'ecoute de ton mp3 quand on clique dessus.

    En résumé, on a ceci:
    un bout de code javascript qui est appellé lorsque l'on clique sur le lien.
    Ce bout de code javascript recooit en parametre le fichier a lire, puis lance la lecture en placant un élément "media" a l'intérieur de la "<div id=player>"

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    je viens d'essayer et ça fonctionne super ! merci !

    mais y'aurait-il moyen d'ouvrir le lecteur sur Windows et non dans la fenetre ?

    Merci beaucoup !

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Mouai... Je continue à penser que si c'est pour lui (chez lui), on pourrait s'en sortir sans code mais juste avec des paramètres de l'OS/navigateur.

    Mais bon, le code permet aussi de faire des choses, alors pourquoi pas...

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    j'ai de la peine à comprendre comment je pourrais faire sans code ? Pourrai tu m expliquer ?

    Merci !

  11. #11
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    ta ligne originale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="musique/<?php echo ($donnees['nom']);?>.mp3">Lancer</a>
    est à remplacer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="play_music.php?m=<?php echo urlencode('musique/'.$donnees['nom'].'.mp3');?>">Lancer</a>
    le lien fait appel à "play_music.php" qui est

    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
     
    <?php
     
    //
    //  play_music.php
    //
    if(isset($_GET['m'])) {
      $fichier=urldecode($_GET['m']);
      header('Content-Type: audio/x-ms-wma');
      header('Content-Transfer-Encoding: binary');
      header('Content-Length: '.filesize($fichier));
      header('Accept-Ranges: bytes');
      header('Content-Disposition: inline');
      set_time_limit(0);
      virtual($fichier);
      exit(0);
    }
     
    ?>
    le Content-Type est faux pour que Windows Media Player s'enclanche et non QuickTime au tout autre player.

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Merci j'ai essayé mais ça dès que je lance, sa me demande si je veux ouvrir le fichier play_music.wma et si je mets ouvrir ba le lecteur windows media me dit qu'il ne peut pas ouvrir ce fichier... d'où peut venir le problème ? merci !

  13. #13
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      virtual($fichier);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      readfile($fichier);
    ça donne quoi?

  14. #14
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    ça me sort une page avec plein de carachtère speciaux

  15. #15
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    nouveau code pour "play_music.php"

    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
     
    <?php
     
    //
    //  play_music.php
    //
    if(isset($_GET['m'])) {
      $fichier=urldecode($_GET['m']);
      if(file_exists($fichier)) {
        header('Content-Type: audio/mpeg');
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: '.filesize($fichier));
        header('Accept-Ranges: bytes');
        header('Content-Disposition: inline');
        set_time_limit(0);
        readfile($fichier);
        exit(0);
      }
      echo 'fichier innexistant';
    }
     
    ?>

  16. #16
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    Yesss ça marche mais le problème reste le meme.... ça mets le fichier dans un dossier temporaire, donc pour une musique ça prends peut de temps, mais si je veux lancer un clip ça copie tout le clip et je perds 5minutes...

  17. #17
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    non, non, non... le type mime pour les videos ne sont pas le même... et si le dernier code fonctionne, alors microsoft commencent à respecter les RFC...

    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
     
    <?php
     
    //
    //  multimedia.php
    //
    if(isset($_GET['m'])) {
      $fichier=urldecode($_GET['m']);
      if(file_exists($fichier)) {
        $mime=apache_lookup_uri($fichier);
        if($mime->content_type) {
          header('Content-Type: '.$mime->content_type);
          header('Content-Transfer-Encoding: binary');
          header('Content-Length: '.filesize($fichier));
          header('Accept-Ranges: bytes');
          header('Content-Disposition: inline');
          set_time_limit(0);
          readfile($fichier);
          exit(0);
        }
      }
      echo 'fichier innexistant';
    }
     
    ?>
    fonctionnera si les fonctions apache sont actives.

  18. #18
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    ce code donne le meme résultat qu'avant, le fichier se copie dans:

    C:\Documents and Settings\HP_Administrateur\Local Settings\Temporary Internet Files\Content.IE5\XF4486CY

  19. #19
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    nouveau code

    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
     
    <?php
     
    //
    //  multimedia.php
    //
    if(isset($_GET['m'])) {
      $fichier=urldecode($_GET['m']);
      if(file_exists($fichier)) {
        $asf='
          <ASX VERSION="3.0">
            <ENTRY>
              <REF HREF="'.realpath($fichier).'" />
            </ENTRY>
          </ASX>
        ';
        header('Content-Type: video/x-ms-asf');
        header('Content-Length: '.strlen($asf));
        header('Accept-Ranges: bytes');
        echo $asf;
        exit(0);
      }
      echo 'fichier innexistant';
    }
     
    ?>
    toujours pas facile de trouver des informations sur le site de microsoft le format ASX permet normalement d'ouvrir tes fichiers directement sans passer par ton HTTP local.

    le realpath() retourne le chemin complet sur ta machine locale... donc le windows de ta machine et de ta machine uniquement prendra le relais... sans copie temporaire.

  20. #20
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 5
    Points
    5
    Par défaut
    le windows media n'arrive pas à lire le fichier

Discussions similaires

  1. executer un fichier .php seulement en ligne de commande
    Par navorinco dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 10/12/2009, 13h34
  2. [SQL] Executer un fichier .sql avec php
    Par Mouchi93 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/08/2007, 17h08
  3. [BATCH] executer une fichier .php
    Par pierre.coudert dans le forum Windows
    Réponses: 2
    Dernier message: 28/02/2007, 12h47
  4. Réponses: 3
    Dernier message: 05/11/2006, 19h55

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