[RESOLU] Retourner un fichier audio ou vidéo avec PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Retourner un fichier audio ou vidéo avec PHP

Re: Retourner un fichier audio ou vidéo avec PHP

par hunomina972 » 04 juin 2018, 11:49

Alors, j'ai trouvé la solution : ça ne venait pas du code mais du serveur !
J'ai passé le module mpm d'apache en mode worker (il était en mode event avant) et finalement je retourne ces headers maintenant :

Code : Tout sélectionner

Content-Disposition: inline; filename="filename" Content-Type: filemimetype Content-Length: filename Content-Transfer-Encoding: binary Cache-Control: no-cache Accept-Ranges: bytes Expires: plus_tard

J'ai pensé à mpm quand j'ai tester sur Chrome et que j'ai vu que mes requêtes étaient en "pending".

Bonne journée à tous ;)

Re: Retourner un fichier audio ou vidéo avec PHP

par hunomina972 » 03 juin 2018, 20:23

J'ai un objet Response qui contient des headers et un body. Le body est "echo". Je récupère le contenu du fichier avec file_get_content(). Et l'url du fichier est placé dans l'attribut src d'une balise <source>.

Re: Retourner un fichier audio ou vidéo avec PHP

par Aureusms » 03 juin 2018, 19:11

Comment renvois-tu les fichiers vidéos ou audios ? Quelles sont les balises utilisées ?
Un truc du style en HTML 5 ?
<video controls src="video.ogv">Ici la vidéo</video>

Retourner un fichier audio ou vidéo avec PHP

par hunomina972 » 03 juin 2018, 13:47

Bonjour tout le monde, j’ai un petit problème depuis quelques jours.
J’ai fait une page (file.php) qui renvoie un fichier, c’est à dire son contenu et des headers associés.
Cette première page va être appelée par une autre page (render.php) et en fonction des paramètres GET passés dans la requêtes, un fichier différent va être retourné.

Donc :
- La page render.php appelle la page file.php, passe différents paramètres GET
- La page file.php, renvoie un fichier en fonction des paramètres qui lui sont envoyés
- En fonction du type de fichier reçu par render.php, j’affiche le fichier d’une façon ou d’une autre :
- Image : Je met l’url de file.php dans la balise image
- Text : Je met le contenu de file.php dans une div
- Video : Je met l’url de file.php en src de la balise source d’une balise video
- Audio : Je met l’url de file.php en src de la balise source d’une balise audio

Si c’est une image ou un fichier texte le contenu est affiché correctement mais lorsque c’est un fichier video ou audio, je n’ai pas d’erreur 404 pour la récuperation de la ressource, je n’ai juste pas de contenu dans ma balise audio ou video.

J’ai essayé de comparer les headers que je renvoie avec les headers renvoyés par le serveur lorsque l’on fait un appel « normal » à un fichier video/audio (ex: /song/mysong.ogg) et ça donne ça :

Appel normal :
< HTTP/1.1 200 OK
< Date: Sun, 03 Jun 2018 11:20:05 GMT
< Server: Apache/2.4.25
< Last-Modified: Sat, 02 Jun 2018 11:09:34 GMT
< ETag: "4cd498-56da6bc498154"
< Accept-Ranges: bytes
< Content-Length: 5035160
< Content-Type: audio/ogg
Appel page file.php :
< HTTP/1.1 200 OK
< Date: Sun, 03 Jun 2018 11:20:43 GMT
< Server: Apache/2.4.25
< Pragma: no-cache
< Cache-Control: no-store, no-cache, must-revalidate
< Accept-Ranges: bytes
< Expires: Sun, 03 Jun 2018 15:20:43 CEST
< Content-Length: 5035160
< Content-Type: audio/ogg
Le corps du message est identique pour les deux réponses et lorsque je passe l’url « normal » en source à ma balise, le fichier est lu.
Je ne trouve pas qu’il y aie quelque chose de véritablement différent entre les deux réponses.

Pouvez vous m’aider s’il vous plait ? Avez vous une idée ? Merci d’avance :)