2

这是控制器:

public function category()
    {
        if($this->form_validation->run()==FALSE)
        {
            $this->load->view('admin/home');
        }
        else{
                $config['upload_path'] = 'uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';
                $this->load->library('upload', $config);
                $image_data=$_POST['file'];
            if ( ! $this->upload->do_upload())
            {
                // no file uploaded or failed upload
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('admin/home', $error);
            }
            else
            {
                // success
                $data = array('upload_data' => $this->upload->data());
                $this->your_upload_model->add($title, $description, $data["file_name"]);

                $this->load->view('upload_success', $data);
            }
        }

    }

这是视图:

<?php echo validation_errors();?>
        <?php echo form_open_multipart('login/category');?>
        <?php
        if(isset($error))
        {
            echo $error;
        }
        ?>
<table>
<tr>
        <td align=right>Logo:</td>

        <td><input type="file" name="file"></td>
        <td><input type="submit" value="submit"></td>

        </tr>

        </table> 

我收到两个错误:

  1. 消息:未定义的索引:文件
  2. 您没有选择要上传的文件。

即使文本字段名称相同并且我使用了form_open_multipart(). 此外,图像未上传,错误无济于事。

4

2 回答 2

0

首先,这$_POST['file']不起作用,但其次,您需要在以下位置提供 HTML 字段名称do_upload()

if ( ! $this->upload->do_upload('file'))
{
...
}

另外,删除,$image_data=$_POST['file'];因为它无论如何都行不通。您已经在使用$this->upload->data()这是获取上传文件数据的正确方法。

$this->upload->do_upload()没有字段名称的原因是因为如果未提供参数,它会查找字段name="userfile"。您正在使用name="file".

于 2012-11-07T16:36:39.983 回答
0

将此代码用于第一个问题:

public function category()
{
 if (array_key_exists('submit', $_POST)) {
  ---------You can enter the remaining code here............
 }
}

对于第二个:

if ( ! $this->upload->do_upload("file"))
{
 -----------code here----------
}
于 2013-07-05T10:31:28.807 回答