Readfile выпуск PHP - PullRequest
       21

Readfile выпуск PHP

0 голосов
/ 30 сентября 2010

Я использую следующее:

@header("Cache-Control: no-cache, must-revalidate");
@header("Content-Type: application/octet-stream");
@header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
@header("Content-Length: ".$row['file_size']);
@header("Content-Disposition: attachment; filename=\"".$row['artist'] . " - " .$row['title']."\"");
@header("Content-type: audio/mpeg;\r\n");

чтобы начать загрузку, теперь по какой-то причине она дает мне

Предупреждение : файл чтения (http://theurl.com/downloads/the file some spaces.mp3) [function.readfile]: не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.1 404 не найден в / home / belgin / public_html / dl.php on line 29

теперь URL-адрес правильный, я трижды проверил, но может ли это быть из-за пробелов в имени файла? И если так, как я могу это исправить? Спасибо

Линия связи:

readfile(http://domain.com/downloads/Warp 1.9_The Bloody Beetroots_320000.mp3)

Ответы [ 4 ]

3 голосов
/ 30 сентября 2010

Я думаю, что вам нужно будет urlencode () и html_entities () URL или имя файла или что-то еще

2 голосов
/ 30 сентября 2010

Кажется, что URL содержит пробелы. Вы избегаете этого правильно для использования внутри readfile ()?

1 голос
/ 12 мая 2012

НЕ кодировать URL! Он будет кодироваться как http%3A%2F%2Fexample.com%2Fsome%20song.mp3. Вам просто нужно заменить пробелы. так что используйте str_replace вместо ...

readfile(str_replace(" ", "%20", $url));

0 голосов
/ 11 октября 2013

urlencode () - это не тот путь.Как упомянуто выше, просто используйте str_replace ().

Просто еще одна возможность, почему он не работает.Это было причиной для меня.Интересно, что file_exists возвращал значение true, но ни одна форма предоставления файла для загрузки не работала без правильной установки приведенного ниже.

В PHP есть параметр с именем open_basedir

Убедитесь, что это правильно настроено в соответствии с вашей хостинговой средой.open_basedir можно редактировать через php.ini

...