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 :

Lire / téléchager un fichier distant


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Points : 41
    Points
    41
    Par défaut Lire / téléchager un fichier distant
    Bonjour,

    Voila mon problème: j'ai des fichiers vidéos enregistrés sur un serveur. Je voudrais rendre ces fichiers téléchargeables. Pour l'instant j'utilise ce 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
     
    $req = mysql_query($sql) or die('Fehler SQL !<br>'.$sql.'<br>'.mysql_error());
     
    		switch($data['dateinameerweiterung']) {
    			case ".avi": $type = "video/x-msvideo"; break;
    			case ".divx": $type = "video/divx"; break;
    			case ".mov": $type = "video/quicktime"; break;
    			case ".mp4": $type = "video/mp4"; break;
    			case ".m4v": $type = "video/x-m4v"; break;
    			case ".wmv": $type = "video/x-ms-wmv"; break;
    			case ".mpg": $type = "video/x-mpeg"; break;
    			case ".mpeg": $type = "video/x-mpeg"; break;
    			default: $type = "application/octet-stream"; break;			
    		}		
     
    		while($data = mysql_fetch_assoc($req)){
    			header("Content-disposition: attachment; filename=".$data['dateiname']); 
    			header("Content-Type: application/force-download"); 
    			header("Content-Transfer-Encoding:$type\n"); // ne pas enlever le \n
    			header("Content-Length: ".filesize($data['path'].'\\'.$data['dateiname'])); 
    			header("Pragma: no-cache"); 
    			header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    			header("Expires: 0"); 
    			readfile($data['path'].'\\'.$data['dateiname']);
    		}
    Le problème est que fichier à télécharger n'est pas trouvé. Dans le fichier error.log, j'ai la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [error] [client 127.0.0.1] PHP Warning:  readfile(X:\\MPEG4\\DIVX\\512x384Genesis.Jesus.He.Knows.Me.512x384.25fps.mpeg4.DIVX.755kbps.AAC.126kbps.44kHz.divx) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in C:\\Dokumente und Einstellungen\\cepc\\Desktop\\Julien\\Mein Projekt\\test_website\\MyFunction.php on line 107, referer: http://127.0.0.1/test_website/index.php?media=MPEG4&type=DIVX&aufloesung=512x384
    Je pense que je ne peux pas accéder au serveur X: aussi facilement car quand j'essai avec un fichier enregistrer sur mon disque C: celà fonctionne sans problème.
    Dois je modifier quelque chose dans le fichier php.ini, httpd.conf de apache, ou existe-t-il une fonction spéciale pour lire les fichiers distants?

    Je vous remercie d'avance

  2. #2
    Membre régulier Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Points : 119
    Points
    119
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    failed to open stream: No such file or directory in C:\\Dokumente und Einstellungen\\cepc\\Desktop\\Julien\\Mein Projekt\\test_website\\MyFunction.php
    Il ne peut simpler pas accéder au fichier, pour des raisons de double antislash ou encore de dossier comportants des espaces dans leur nom.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    Merci de ta réponse mais je ne pense pas que le problème vienne de là car j'ai essayé en ecrivant le chemin du fichier en "dur" et celà ne fonctionne pas. J'ai aussi essayé de vérifier la présence du fichier grace à la fonction file_exists("MonChemin") et le fichier n'est pas trouvé.

    Si quelqu'un a une idée...

    Merci d'avance

  4. #4
    Membre régulier Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Points : 119
    Points
    119
    Par défaut
    C'est bien ce que je dis, c'est le format du chemin qui n'est pas "bon".

    Les espaces et les doubles backslash ne sont pas vraiment propres...

    Système de fichiers

    Toutes les versions de PHP. Explicitement avec le protocole file:// depuis PHP 5.0.0.

    * /path/to/file.ext
    * relative/path/to/file.ext
    * fileInCwd.ext
    * C:/path/to/winfile.ext
    * C:\path\to\winfile.ext
    * \\smbserver\share\path\to\winfile.ext
    * file:///path/to/file.ext
    http://fr2.php.net/manual/fr/wrappers.php

    [edit]Ha désolé alors :s Je ne travail pas sous windows et encore moins sur des disques autres que celui où est installer le serveur web... je ne peux donc pas t'aider.[/edit]

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    En fait quand je dis que j'ai essayé avec le chemin en dur, c'est que j'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (file_exists("X:\MPEG4\DIVX\mavideo.avi")){
          echo 'ok';
    }
    Et ca ne marche tout de meme pas. Donc je pense que ca ne vient pas de la. De plus quand je faisais un echo de "Monchemin", il s'affiché avec un slash seulement. Si dans mon fichier error.log, le chemin est ecrit avec les double slash, c'est que pour qu'un slash soit interprété par MySQL, il faut qu'il soit précédé d'un autre et je pense que c'est de la que vienne les double slash.
    Comme autre test, j'ai essayé de vérifier l'existence d'un fichier contenu sur mon C: (ca fonctionne) puis sur D: (sans succes).

    J'ai cherché du coté du safe mode mais cela ne fonctionne toujours pas.

Discussions similaires

  1. Lire un fichier distant
    Par darkbob dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 31/03/2007, 08h39
  2. Réponses: 3
    Dernier message: 26/02/2007, 10h49
  3. lire un fichier distant
    Par Thargor dans le forum Coldfusion
    Réponses: 1
    Dernier message: 27/11/2006, 15h48
  4. Lire un fichier distant avec SSH
    Par Fritzoune dans le forum Langage
    Réponses: 3
    Dernier message: 06/09/2006, 11h24
  5. Comment lire un fichier distant ?
    Par reski dans le forum Langage
    Réponses: 1
    Dernier message: 03/09/2006, 12h52

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