开发者

*.wav files do not function properly in php

When attempting to view a *.wav URL on our webserver, the data doesn't transfer properly.

We are using apache2 with php5.10. Among the apache rewrite rules is:

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

And the relevant code from wav.php is:

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

This is supposed to return any .wav file on the server when server.company.com/filepath is accessed via a web browser.

When attempting to listen to any *.wav file in firefox or chrome in ubuntu (haven't tested other OSes yet), the plugin errors: "Location not found." However, right-clicking and choosing "save link as" allows the user to download the .wav file.

开发者_高级运维

Any thoughts?

Edit:

getPassed is a function to return variables from $_GET or $_POST


I think that you need a couple more headers for this functionality to work, not 100% sure because I have never tried to stream a file.

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

It is worth a shot to try it with those either way. You may also want to try a content-type of Content-Type: application/octet-stream;, you may also want to try "chunking" the file using readfile_chunked() (a user contributed function on php.net) and see if that possibly helps as well.

Hope it helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜