我有一个带有'do_upload'方法的控制器,它应该将图像上传到/ img,但我得到以下错误:
http://localhost/img/
上传路径似乎无效。
这是上传课程的方法。
public function do_upload(){
$config['upload_path']= "http://localhost/img/";
$config['allowed_types']= 'gif|jpg|png';
$config['max_size']='100';
$config['max_width']='1024';
$config['max_height']='768';
$this->load->library('upload',$config);
if(!$this->upload->do_upload()){
$errors=array('errors'=>$this->upload->display_errors());
echo $config['upload_path'];
$this->load->view('error',$errors);
}
else{
$data=array('upload_data'=> $this->upload->data());
$this->load->view('admin/admin');
}
}
文件权限设置如下(为了测试它的工作原理!):
drwxrwxrwx
但是,如果我将浏览器定向到http://localhost/img/
,我可以查看目录的内容,因此我认为这不是一个权限问题。有什么我做错了吗?
答案 0 :(得分:4)
正如兰兹所说,试试
$config['upload_path']= APPPATH;
或
$config['upload_path']= APPPATH.'img/';
文件管理和浏览器地址很少相同,从不使用localhost。
修改:有关可能的路径,请参阅my other answer。在大多数情况下,您可能希望使用FCPATH
。
答案 1 :(得分:3)
您无法上传到网址。 $config['upload_path']
必须是服务器上文件系统位置的路径。
答案 2 :(得分:1)
我在几个小时内遇到了同样的问题。
问题是关于config中给出的文件路径。我手动将其更改为绝对路径。 我在WAMP工作。我的项目目录是'rmp' 当我使用配置文件路径时,
$_SERVER['DOCUMENT_ROOT'].'rmp/uploads/';
一切正常。不知道究竟是什么问题。但这解决了我的问题。 干杯!!! :)
解决方案2: 我做了一些工作,发现CI默认是以项目文件夹为目标。因此,如果您将img作为上传文件夹名称,请确保它位于与应用程序,系统并行的codeigniter的根目录中。
赞,ROOT/yourcodeigniterproject/img
在这种情况下,只需将'img/'
作为上传路径即可。工作正常。
答案 3 :(得分:0)
老问题,但没有人指出img文件夹需要在htaccess文件中列出。 根据它的外观(.htaccess代码),如果您使用CI user_guide提供的URL页面,则在robots.txt之后添加pipe devider和img之类的:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|img)
RewriteRule ^(.*)$ /index.php/$1 [L]