尝试在我们的网络服务器上查看* .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
返回变量的函数答案 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上的用户贡献函数)“分块”文件并查看是否可能有帮助同样。
希望它有所帮助。