与其他元素一起上传codeigniter文件

时间:2013-04-18 23:08:29

标签: image forms codeigniter file-upload

我有一个带有表单的页面。表单上有一个下拉列表,一些输入框和一个文件上传。如果我尝试提交我的页面,我会得到一个空白页面,其中包含错误“不存在的类:上传”。我还没有使用文件上传。

这是我的输入文件类型:

<tr><td>Image: </td></tr>
<tr><td><input type="file" name="image" size="20" /></td></tr>

我已经阅读了CI文件上传类,你需要一个form_open_multipart('upload');那么我是否会拥有这种形式,或者在我的案例中我是否必须做其他事情?因为我在该表单上有其他输入类型?

以下是我的控制器的一些代码:

$subject = htmlspecialchars(trim($this->input->post('subject')));
$message = htmlspecialchars(trim($this->input->post('message')));
$image = $this->input->post('image');

$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);

if (!$this->upload->do_upload($image)) {          
    $data['fout'] = $this->upload->display_errors();
    $this->annuleren($soort, $data);
} else {
    $data['upload'] =  $this->upload->data();
}

$id = $this->message_model->insert($message, $subject, $image);

redirect('infoscreen/dashboard', 'refresh');

我还在“源文件”下创建了一个“上传”文件夹。我可能做了些蠢事。有人可以帮帮我,告诉我我做错了什么以及如何解决它?

非常感谢:)

1 个答案:

答案 0 :(得分:2)

编辑:首先加载上传库:

$this->load->library('upload');

另一个问题在于您引用文件错误。

这一行是不必要的:

$image = $this->input->post('image'); // <- remove this line

而只是使用:

if (!$this->upload->do_upload('image')) {   

默认情况下,CodeIgniter正在查找名为“userfile”的文件输入,但如果不存在,则需要将'image'添加到do_upload()方法中。

然后你就行:

$id = $this->message_model->insert($message, $subject, $image);

我不确定您认为$image变量应该是什么,但如果上传成功,您可以附加$data['upload']的数据:

$id = $this->message_model->insert($message, $subject, $data['upload'][file_name]); // <- gets the filename 

此处完整参考:http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

同样回答第二个问题,多部分表单类型还有其他输入字段/类型不是问题。