* .wav файлы не работают должным образом в php - PullRequest
2 голосов
/ 23 июля 2010

При попытке просмотра URL-адреса * .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;
?>

Предполагается, что любой файл .wav на сервере должен возвращаться при доступе к server.company.com/filepath через веб-браузер.

При попытке прослушать любой файл * .wav в Firefox или Chrome в Ubuntu (еще не тестировал другие ОС), плагин выдает ошибку: «Местоположение не найдено». Однако, щелкнув правой кнопкой мыши и выбрав «сохранить ссылку как», пользователь может загрузить WAV-файл.

Есть мысли?

Edit:

getPassed - это функция, которая возвращает переменные из $ _GET или $ _POST

1 Ответ

1 голос
/ 23 июля 2010

Я думаю, что вам нужна еще пара заголовков, чтобы эта функция работала, но я не уверен на 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) и посмотреть, если этовозможно, также помогает.

Надеюсь, это поможет.

...