2010-07-22 2 views
2

При попытке просмотреть URL-адрес * .wav на нашем веб-сервере данные не передаются должным образом.* .wav файлы не работают должным образом в php

Мы используем apache2 с php5.10. Среди правил апач перезаписи:

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/ путь к файлу доступен через веб-браузер.

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

Любые мысли?

Edit:

getPassed является функцией для возвращения переменных из $ _GET или $ _POST

+0

Он позволяет загрузить файл _working_ WAV или просто файл с расширением .wav? – zneak

+0

Рабочий файл wav – Manbeardo

ответ

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;, вы также можете попробовать «chunking» файл с помощью readfile_chunked() (пользовательская функция на php.net) и посмотреть, может ли это помочь.

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