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.phpvalidate_upload_path 方法中

此方法使用各种技巧将您的上传路径解析为完整路径,因此我建议在每一行之前粘贴一个 var 转储,如下所示: $this-&gt;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 上传图片 - 上传路径似乎无效的主要内容,如果未能解决你的问题,请参考以下文章

上传路径似乎无效”。 Codeigniter 文件上传

“上传路径似乎无效”。 Codeigniter文件上传不起作用[关闭]

上传路径似乎无效“。 Codeigniter文件上传

上传图片并在codeigniter中插入文本

使用ajax在codeigniter中上传图片

Codeigniter 替换上传的图片