我有一个带有表单的页面。表单上有一个下拉列表,一些输入框和一个文件上传。如果我尝试提交我的页面,我会得到一个空白页面,其中包含错误“不存在的类:上传”。我还没有使用文件上传。
这是我的输入文件类型:
<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');
我还在“源文件”下创建了一个“上传”文件夹。我可能做了些蠢事。有人可以帮帮我,告诉我我做错了什么以及如何解决它?
非常感谢:)
答案 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
同样回答第二个问题,多部分表单类型还有其他输入字段/类型不是问题。