我正在尝试通过发送特殊标头来强制下载文件。在这样做时,我必须通过我的下载脚本重定向PDF文档的URL请求。
我在发送之前传递一个名为$ seg3的查询,它是base64_encode()ed,然后在尝试请求文件时传递base64_decode()ed和urlencoded()。
我看了一下使用,
if (ini_get('allow_url_fopen') == '1')
{
$data = file_get_contents(urlencode(base64_decode($seg3)));
}
else
{
$fp = fopen(urlencode(base64_decode($seg3)), 'rb');
$data = stream_get_contents($fp);
fclose($fp);
}
但file_get_contents()
和stream_get_content()
都失败了:
fopen($URL): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
然而,当我转储正在发送的URL时,我可以将其复制并粘贴到浏览器中并打开文件。
只有在文件中有空格时才会出现这种情况,但无论是否使用urlencode()
,都会出现错误。
答案 0 :(得分:2)
可能是url返回404错误,但仍然会返回常规内容。因此,虽然浏览器可能会显示常规页面,但由于结果代码,此函数将失败。
答案 1 :(得分:0)
我确定已经修复了这个问题,但如果有空格,urlencode($ url)可能会解决您的问题。