我在Codeigniter控制器中为下载文件创建了一个函数,这里是代码。
function download_example($file_name) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file_name);
ob_clean();
flush();
readfile(base_url().'download_example/'.$file_name);
}
但是在文件显示 403 Forbidden error 之后下载。
遇到PHP错误严重性:警告
消息: readfile(http://example.com/download_example/example.txt):失败了 开放流:HTTP请求失败! HTTP / 1.1 403禁止
文件名:controllers / controllers.php
行号:371
答案 0 :(得分:2)
更改为:
readfile(dirname(__FILE__).'/download_example/'.$file_name);
如果是本地文件,则当前PHP脚本的目录与download_example
目录相同。更改以匹配您的系统。还要确保该文件存在,并且运行Web服务器的用户有权访问此文件。
答案 1 :(得分:2)
使用http://example.com/download_example/file_name
会获取该文件的http地址,例如C:\path\to\site_dir\download_example_dir\file_name
,但使用服务器系统路径(例如dirname($this->input->server('SCRIPT_FILENAME')).'/download_example_dir/file_name'
)更好。
我个人使用这样的东西:
userclientcode
答案 2 :(得分:0)
这不是您的脚本的问题,而是您请求的资源。 Web服务器返回“禁止”状态代码。
可能会阻止PHP脚本以防止抓取。
您应该与远程服务器的管理员交谈。