Codeigniter 上传图片 - 上传路径似乎无效
Posted
技术标签:
【中文标题】Codeigniter 上传图片 - 上传路径似乎无效【英文标题】:Codeigniter upload image - The upload path does not appear to be valid 【发布时间】:2011-12-28 14:44:16 【问题描述】:我在使用 codeigniter 上传库上传图片时遇到问题,我不断收到错误,
上传路径似乎无效。
我也尝试上传的文件路径如下,
$config['upload_path'] = './media/images/site';
当我点以下内容时,
die(var_dump(is_dir($config['upload_path'])));
我得到以下返回,
布尔(真)
文件夹也是可写的(777),所以不知道哪里出错了,下面是我的上传代码,
$config['upload_path'] = './media/images/site';
//die(realpath($config['upload_path']));
//die(var_dump(is_dir($config['upload_path'])));
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = '1500';
$config['max_width'] = '390';
$config['max_height'] = '269';
$this->load->library('upload',$config);
if ( ! $this->upload->do_upload() && $_FILES['userfile']['error'] != 4)
$data['error'] = $this->upload->display_errors();
$this->template->build('/admin/pages/about_us', $data);
else
$image = $this->upload->data();
if(empty($image['file_name']))
$image['file_name'] = $this->formbuilder->defaults['page_image'];
$page = array(
//'page_title' => $this->input->post('page_title'),
//'page_slug' => $this->input->post('page_slug'),
'page_content' => $this->input->post('page_content'),
'page_image' => $image['file_name'],
'date_created' => date("Y-m-d h:i:s"),
'created_by' => 1
);
if($this->pages_model->insert($this->security->xss_clean($page)))
redirect('/admin/dashboard');
我看不到任何明显会阻止文件上传的东西,下面是我项目的文件夹结构
/application
/system
index.php
.htaccess
/media
/images
/site
/admin
/css
/js
如果有人能阐明我的问题,那就太好了。
为顽固的反对者编辑
什么会导致这个问题?
(有个问题,反正好像还不够明显)
【问题讨论】:
【参考方案1】:尝试在库加载行之前添加此行:
// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:
$this->upload->initialize($config);
不要忘记在模板中添加这一行:
<?php echo form_open_multipart('upload/do_upload');?>
【讨论】:
如果他不使用多部分表单,他会收到“您没有选择要上传的文件”。在收到有关上传路径的任何错误之前【参考方案2】:您的问题似乎出现在system/libraries/Upload.php
的validate_upload_path
方法中
此方法使用各种技巧将您的上传路径解析为完整路径,因此我建议在每一行之前粘贴一个 var 转储,如下所示:
$this->set_error('upload_no_filepath');
确定哪里出了问题,然后从那里回溯。
【讨论】:
【参考方案3】:在您的控制器
中试用此代码$config['upload_path'] = 'images'; //name of the uploading folder
$config['allowed_types'] = 'jpeg|png|jpg';
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload())
echo $this->upload->display_errors();
exit;
else
$upload_data = $this->upload->data();
【讨论】:
以上是关于Codeigniter 上传图片 - 上传路径似乎无效的主要内容,如果未能解决你的问题,请参考以下文章