4

我正在从我的远程服务器(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 手动下载文件,文件下载和播放也很好。仅当我使用上述脚本下载时才会出现明显的损坏。我将不胜感激。

4

2 回答 2

3

以下是 WAV 的有效 MIME 类型:

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

你正在使用application/x-wav. 请参阅此处此处以获取参考。

于 2013-01-21T21:08:32.360 回答
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);
} 
于 2018-10-24T20:18:16.420 回答