2010-08-23 2 views
0

J'ai une page avec des fichiers MP3 qui sont jouables à partir d'un lecteur, et il y a aussi des liens pour télécharger les chansons. Lorsque l'utilisateur clique sur le lien de téléchargement, il faut ouvrir le dialogue de téléchargement au lieu d'ouvrir un lecteur multimédia, il m'a été recommandé d'utiliser ce script d'en-tête:Besoin d'aide pour obtenir cet en-tête téléchargement automatique pour montrer le bon chemin

includes/auto-download.php:

<?php 
$path = $_GET['path']; 
header('Content-Disposition: attachment; filename=' . basename($path)); 
readfile($path); 
?> 

et puis sur ma page principale, le lien ressemble à ceci:

<a href="includes/auto_download.php?path=Media/Audio/Date/song.mp3">Song Name</a> 

me semble être quelque chose de mal avec mes chemins, comme quand je clique sur le lien, la zone de téléchargement s'ouvre, et je peux télécharger un fichier avec le nom correct, mais il ne contient aucune information.

Pour des détails sur la structure de mon dossier, j'ai ceci:

/Patrons (où ma page index.php est avec mon lien

/Patrons/includes (où mon téléchargement automatique. script php est)

/Patrons/médias/Audio/date/(c'est là toutes les chansons sont)

Toute aide serait grandement appréciée!

Répondre

1

soit c hangement code HTML à ceci:

<a href="includes/auto_download.php?path=../Media/Audio/Date/song.mp3">Song Name</a> 

OU modifier le code PHP à ceci:

readfile('../'.$path); 
+0

Je suis revenu à supprimer, parce que je pensais juste trop mais vous avez répondu à temps! :-D Merci d'avoir pris le temps! – Joel

0

$ path doit être le chemin relatif au fichier de la racine web. sans barre oblique Si les fichiers sont en dehors de la racine Web, vous devez utiliser un chemin d'accès complet (/home/webuser/song_files/song.mp3).

Par exemple $path = 'song_files/'. $_GET['name_of_the_file'];

Vous devriez également vérifier si le fichier n'existe pas et sortir avec une erreur. Voici un exemple que j'ai fait dans codeigniter.

function _begin_download($document_data) { 
    basepath = 'uploads/'; 
    $filepath = basepath . $document_data->filename; 
    if (file_exists($filepath)) { 
     header("Content-type: " . $document_data->mimetype); 
     header("Content-length: " . filesize($filepath)); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Content-disposition: attachment; filename="' . $document_data->filename . '"'); 
     readfile($filepath); 
     exit(); 
    } else { 
     exit('File not found.'); 
    } 
} 
Questions connexes