下载的WAV文件无法播放

时间:2013-01-21 21:05:40

标签: php wav downloading

我从远程服务器(Centos 5.8)下载WAV文件。使用以下PHP脚本:

header('Content-Description: File Transfer');
header('Content-Type: audio/x-wav');
header('Content-Disposition: attachment; filename=' . basename($realLink));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($realLink));
ob_clean();
flush();
readfile($realLink);

当我尝试使用Windows Media Player或Itunes播放下载的文件时,它将无法播放。即使我本地计算机上下载的WAV文件大小与服务器上文件的版本相同,下载文件的属性也显示为00:00长度,不会播放。此外,如果我使用ftp手动下载它,文件下载和播放就好了。只有当我使用上面的脚本下载时,才会发生明显的损坏。我很感激任何帮助。

2 个答案:

答案 0 :(得分:3)

以下是WAV的有效MIME类型:

audio/vnd.wave
audio/wav
audio/wave
audio/x-wav

您正在使用application/x-wav。有关参考资料,请参阅herehere

答案 1 :(得分:0)

此代码可用于下载wav音频。

$ctype ='audio/x-wav'; // file type
$filepath = '/var/www/html/audio.wav';//absolute url
$size = filesize($fichero); // size of file
$name = basename($fichero); // name of file

$fp=fopen($fichero, "rb");
if ($size && $ctype && $fp) {
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: wav file");
    header("Content-Type: " . $ctype);
    header("Content-Disposition: attachment; filename=" . $name);
    header("Content-Transfer-Encoding: binary");
    header("Content-length: " . $size);
    ob_clean();
    fpassthru($fp);
}