Readfile问题PHP

时间:2010-09-29 20:09:49

标签: php download readfile

我正在使用以下内容:

@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");

开始下载,现在由于某种原因它给了我

警告:readfile(http://theurl.com/downloads/the file some spaces.mp3)[function.readfile]:无法打开流:HTTP请求失败!找不到HTTP / 1.1 404  在 /home/belgin/public_html/dl.php 29

现在网址是有效的,我已经检查了三次,但可能是因为文件名中有空格?如果是这样我怎么能解决这个问题呢?感谢

reafile line:

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

4 个答案:

答案 0 :(得分:3)

我认为你需要urlencode()和html_entities()网址或文件名或其他

答案 1 :(得分:2)

似乎网址包含空格。你是否正确地将其转义以便在readfile()中使用?

答案 2 :(得分:1)

不要编码网址!它将编码为http%3A%2F%2Fexample.com%2Fsome%20song.mp3。你只需要替换空格。所以请使用str_replace代替......

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

答案 3 :(得分:0)

urlencode()不是要走的路。如上所述,只需使用str_replace()。

这里只是另一种可能性,为什么它不起作用。这是我的原因。有趣的是,file_exists返回true,但没有任何形式向公众提供下载文件而没有正确设置以下内容。

PHP有一个名为 open_basedir

的设置

确保将此设置与您的托管环境正确相关。 open_basedir可以通过php.ini

编辑