0

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

这是我的输入文件类型:

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

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

非常感谢 :)

4

1 回答 1

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

另外要回答您的第二个问题,多部分表单类型具有其他输入字段/类型不是问题。

于 2013-04-18T23:14:52.310 回答