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

时间:2016-04-07 15:06:15

标签: php file codeigniter

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

我使用一个非常简单的表单来获取文件,该文件正确上传到ima​​ges文件夹。该文件的full_path也成功写入名为images的db表。但文件名是空白的。

我的表格:

    <?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。

1 个答案:

答案 0 :(得分:2)

您在实际上传任何内容之前请求上传的数据。这就是为什么您的$image_data仅包含您的配置值。在实际执行$image_data = $this->upload->data();(进入您的其他区块)后,将do_upload()来电移至:

     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');
        }
    }