PHP en-Tête Content-Disposition: attachment forces .fichier php ou en ligne

Je veux télécharger un seul .fichier mp3 à partir de mon site, mais lors de l'utilisation de ce code, il force un .php dans Firefox et Safari. Mais dans google chrome, envoyer vigueur le fichier en ligne et de jouer sur la page. Comment puis-je obtenir de télécharger un .fichier mp3?

$track = $_SERVER['QUERY_STRING'];

if (file_exists("/home/user/gets/" .$track)) {
    header("Content-Type: audio/mpeg");
    header('Content-Length: ' . filesize($track));
    header('Content-Disposition: attachment; filename="test.mp3"');
    $str = "/home/user/gets/".$track;
    readfile($str); 
    exit;
} else {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    echo "no file";
}

J'ai aussi essayé de télécharger un .zip fichier et changer le Type de Contenu application/ocetet-flux, mais il les forces .php les fichiers sur tous les navigateurs.

//$track = $_SERVER['QUERY_STRING'];
$track = 'testfile.zip';
if (file_exists("/home/user/gets/" .$track)) {
    header("Content-Type: application/octet-stream");
    header('Content-Length: ' . filesize($track));
    header('Content-Disposition: attachment; filename="test.mp3"');
    $str = "/home/user/gets/".$track;
    readfile($str); 
    exit;
} else {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    echo "no file";
}
Je pense que filesize($track) est mauvais, il devrait être le tout le chemin filesize("/home/user/gets/".$track)

OriginalL'auteur rubio | 2012-08-16