* .wav文件在php中无法正常运行

时间:2010-07-22 20:28:07

标签: php apache2 rewrite wav readfile

尝试在我们的网络服务器上查看* .wav网址时,数据无法正常传输。

我们正在使用apache2和php5.10。 apache重写规则包括:

RewriteRule ^(.+)\.(wav)$ /wav.php?wav=$1.$2 [L,NC]

来自wav.php的相关代码是:

<?php
$image = getPassed("wav");
header( 'Content-Type: audio/wav');
set_include_path("/");
readfile($image, true);
exit;
?>

当通过Web浏览器访问server.company.com/filepath时,应该返回服务器上的任何.wav文件。

当试图在ubuntu中收听firefox或chrome中的任何* .wav文件时(尚未测试其他操作系统),插件错误:“找不到位置”。但是,右键单击并选择“将链接另存为”允许用户下载.wav文件。

有什么想法吗?

编辑:

getPassed是一个从$ _GET或$ _POST

返回变量的函数

1 个答案:

答案 0 :(得分:1)

我认为您需要更多标头才能使用此功能,而不是100%确定,因为我从未尝试过流式传输文件。

header( 'Content-Type: audio/wav');
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: " . filesize($image) ."; "); 
header('filename="'.$image . '"; '); 

用这两种方式尝试它是值得的。您可能还想尝试内容类型Content-Type: application/octet-stream;,您可能还想尝试使用readfile_chunked()(php.net上的用户贡献函数)“分块”文件并查看是否可能有帮助同样。

希望它有所帮助。