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 :

[Fichier] Readfile, embed et "gros" fichiers


Sujet :

Langage PHP

  1. #1
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut [Fichier] Readfile, embed et "gros" fichiers
    Bonjour à tous,

    J'ai un petit problème avec la fonction readfile.
    Je souhaite faire une page HTML de visualisation de fichiers : texte, image ou son.

    J'ai donc deux fichiers php.

    Le premier, readfile.php, permet de lire un fichier sur le disque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      header("Content-Type: ".$file->mime);
      $header="Content-disposition: inline; filename=".$file->name;
      header($header );
      readfile("./files/".$file->path);
    ?>
    Le second, readsound.php, permet de lire un fichier audio dans une page HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html>
      <embed src='/readfile.php?file=<?php print($file->id); ?>' width='320' height='240' autostart='true' autoload='false' border='0' loop='0'>
    </html>
    Le probleme, c'est que le fichier n'arrive pas entier apparement, puisqu'il ne dure que quelques secondes et qu'il y a pas de sons à certains moments.

    La solution intermédiaire, par le fichier readsound2.php fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html>
      <embed src='/files/<?php print($file->path); ?>' width='320' height='240' autostart='true' autoload='false' border='0' loop='0'>
    </html>
    Mais je ne veut pas faire comme ça, car je ne veut pas que les utilisateurs puissent connaître l'adresse directe d'un fichier (en effet, il y a controle d'idendité avant la lecture du fichier)...

    Merci d'avance de votre aide

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    vraiment curieux, readfile() n'a aucune limitation normalement....

    à moins que tu utilises ob_start() avant ? Car dans ce cas il peut y avoir un problème de quantité de mémoire utilisée...

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Peut-etre rajouter Content-length ?

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Avec Firefox + LiveHttpHeader tu peux savoir ce que apache envoie comme header à ton navigateur quand il requiert directement le fichier son/image. Essaye déjà de te caler

  5. #5
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Kioob
    à moins que tu utilises ob_start() avant ? Car dans ce cas il peut y avoir un problème de quantité de mémoire utilisée...
    Lol, je ne sais même pas ce que c'est ob_start(), alors non je ne l'utilise pas...

    Citation Envoyé par Mr N.
    Peut-etre rajouter Content-length ?
    Ok, je vais essayer ça tout de suite...

    Citation Envoyé par Mr N.
    Avec Firefox + LiveHttpHeader tu peux savoir ce que apache envoie comme header à ton navigateu
    C'est à dire lol, ca non plus, je ne sais pas ce que c'est...

  6. #6
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Apparement, avec le content-length ca marche... Merci beaucoup !!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2004, 15h44

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