使用CodeIgniter上载库时未获取文件名


File name not grabbed when using CodeIgniter upload library

首先我可以请求不将其标记为重复。我已经阅读了SO上关于CodeIgniter上传库问题的其他帖子,遗憾的是,它们没有涵盖这一点。我还广泛阅读了CI文档,所有内容都表明这应该是正确的。

我正在使用一个非常简单的表格来获取文件,该文件已正确上传到图像文件夹。文件的full_path也成功地写入到名为images的数据库表中。但是,文件名为空。

我的表格:

    <?php echo form_open_multipart('image_upload/do_upload');?>
    <input type="file" name="userfile" size="20" multiple="true" />
    <br /><br />
    <input type="submit" value="upload" />
    </form>

我的控制器功能:

    function do_upload()
     {
        $config['upload_path'] = 'c:/wamp/www/honest/images';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '5000';
        $config['overwrite'] = TRUE;
        $config['remove_spaces'] = TRUE;

        $this->load->library('upload', $config);    
        $image_data = $this->upload->data();
        echo '<pre>'; print_r($image_data); echo '</pre>';
        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());
            $data['main_content'] = 'imageupload';
            $this->load->view('includes/template', $data);
            echo "FAILED";
        }
         else
        {
          $data = array(
            'filename' => $image_data['file_name'],
            'fullpath' => $image_data['full_path']
          );
          $this->db->insert('images', $data);   
          $this->load->view('imageupload');
        }
    }

我正在使用

    echo print_r($image_data); echo;

显示相关的图像数据,但这是返回的全部内容:

Array
(
    [file_name] => 
    [file_type] => 
    [file_path] => c:/wamp/www/honest/images/
    [full_path] => c:/wamp/www/honest/images/
    [raw_name] => 
    [orig_name] => 
    [client_name] => 
    [file_ext] => 
    [file_size] => 
    [is_image] => 
    [image_width] => 
    [image_height] => 
    [image_type] => 
    [image_size_str] => 
)

我不明白为什么它没有获取文件名和其他细节——有人能帮助发现一个简单的错误吗?

非常感谢,

DP。

您在实际上传任何东西之前请求上传的数据。这就是为什么$image_data只包含您的配置值。在实际执行do_upload()之后将您的$image_data = $this->upload->data();调用移动到(进入其他块):

     function do_upload()
     {
        $config['upload_path'] = 'c:/wamp/www/honest/images';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '5000';
        $config['overwrite'] = TRUE;
        $config['remove_spaces'] = TRUE;

        $this->load->library('upload', $config);    
        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());
            $data['main_content'] = 'imageupload';
            $this->load->view('includes/template', $data);
            echo "FAILED";
        }
         else
        {
          $image_data = $this->upload->data();
          $data = array(
            'filename' => $image_data['file_name'],
            'fullpath' => $image_data['full_path']
          );
          $this->db->insert('images', $data);   
          $this->load->view('imageupload');
        }
    }