6
votes

Sortie mp3 avec php

Je travaille sur mon projet d'école et j'essaie de générer un fichier MP3 à l'aide de PHP, mais apparemment, cela génère simplement un fichier corrompu et je n'ai aucune idée de la raison. J'ai parcouru tout le filet pour trouver une solution, mais non.

<?php
$filename = 'audio/1/1.mp3';

if(file_exists($filename)) {
    header('Content-Type: audio/mpeg');
    header('Content-Disposition: filename="test.mp3"');
    header('Content-length: '.filesize($filename));
    header('Cache-Control: no-cache');
    header("Content-Transfer-Encoding: chunked"); 

    readfile($filename);
} else {
    header("HTTP/1.0 404 Not Found");
}
?>


2 commentaires

Avez-vous consulté le fichier téléchargé dans un éditeur de texte ou exécutez-le via un programme Binary DIFF, pour voir comment il est différent de la copie du côté du serveur d'origine? Il n'y a rien de évidence mal avec votre code.


Avez-vous vérifié pour voir s'il y a des espaces blancheurs avant la première balise PHP?


3 Réponses :


0
votes

Pouvez-vous essayer de remplacer

header("Content-Transfer-Encoding: chunked"); 


2 commentaires

Est le \ n vraiment nécessaire? Je vais avoir un aller bientôt! Merci d'avance


N'a pas fonctionné. J'ai essayé de télécharger le fichier et de le lire avec Winamp, ce qui me montre essentiellement un fichier corrompu comme il manque des jonques disparus.



6
votes
header('Content-Disposition: inline;filename="test.mp3"');
That's what you're missing in your header() (you had no "inline" specified).
Content-Transfer-Encoding should be "binary", not "chunked".Edit:
use "inline" if you want it to be displayed within the browser (if capabilities exist) or "attachment" if you want to force download.

8 commentaires

Il a besoin d'une disposition de contenu: pièce jointe pour cela. Pas en ligne.


Comme vous pouvez le constater, j'ai fourni une explication aux deux options;)


N'a pas fonctionné. J'ai essayé de télécharger le fichier et de le lire avec Winamp, ce qui me montre essentiellement un fichier corrompu comme il manque des jonques disparus.


Êtes-vous sûr que le fichier que vous avez listifile () - ing n'est pas corrompu pour commencer?


Oui, ce n'est pas corrompu. Pourrait-il y avoir quelque chose qui ne va pas dans la configuration du serveur? En fin de compte, il renvoie un joli gros fichier


Ouvrez le fichier dans l'éditeur de texte et voyez quelle est la sortie du texte brut.


Le problème est trié et je l'ai posté comme réponse. Cela ne devait pas faire avec le fichier ni ce bit de script. Merci pour votre aide quand même! Je t'ai donné un pouce


C'était une bonne information. Merci. Et "Inline" est extrêmement utile.



0
votes

Eh bien, la réponse était due et ce n'était pas mon script. Avant toute tag HTML, je charge tout le contenu, si des en-têtes personnalisés sont définis, je ne montre que le contenu (extrait des modèles) xxx pré>

pour les modèles que j'utilise ob_get_contents (), donc dans le modèle réel Echo / Imprimer les données. Pour une raison quelconque, ob_get_contents () ne récupère pas cela correctement, c'est là que cela s'est mal passé. P>

Mes en-têtes dans une matrice et le chemin du contenu dans une autre variable et appelez cela. P >

...
</html>
<?php else:
    foreach($page->customHeader as $header) {
        header($header, true);
    }

    readfile($page->headerContent);
endif; ?>


0 commentaires