我在codeigniter中尝试上传表单时遇到了一些问题。 不确定我做错了什么,其他一切都在数据库中正确。我查看了文档,尝试了几件事,但我没有得到任何进一步的信息。非常感谢任何反馈! 提前谢谢。
模型:
public function set_newstudent()
{
$this->load->helper('url');
$slug = url_title($this->input->post('naam'), 'dash', TRUE);
$config['upload_path'] = '/file_path/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
$this->upload->data('full_path'););
$data_upload_files = $this->upload->data();
$image = $data_upload_files[full_path];
$data = array(
'naam' => $this->input->post('naam'),
'voornaam' => $this->input->post('voornaam'),
'id' => $slug,
'text' => $this->input->post('text'),
'picture'=>$this->input->post('picture')
);
return $this->db->insert('student', $data);
}
控制器:
public function create()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Create a new Student';
$this->form_validation->set_rules('naam', 'Naam', 'required');
$this->form_validation->set_rules('voornaam', 'Voornaam', 'required');
$this->form_validation->set_rules('text', 'Text', 'required');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('students/create');
$this->load->view('templates/footer');
}
else
{
$this->student_model->set_newstudent();
$this->load->view('students/success');
}
}
视图:
<?php echo validation_errors(); ?>
<?php echo form_open_multipart('student/create');?>
<div class="form-group">
<label for="naam">Naam</label><br>
<input type="input" name="naam" class="form-control" /><br />
</div>
<div class="form-group">
<label for="voornaam">Voornaam</label><br>
<input type="input" name="voornaam" class="form-control"/><br />
</div>
<div class="form-group">
<label for="text">Vertel iets over jezelf:</label><br>
<textarea name="text" class="form-control" rows="5"></textarea><br />
</div>
<div class="form-group">
<label for="text">Kies een profiel foto:</label><br>
<input type="file" name="userfile" class="btn btn-default btn-file" />
</div>
<input type="submit" class="btn btn-success" name="submit"
value="Create student" style="width:100%;margin-bottom:1%" />
</form>
答案 0 :(得分:4)
正如我所见,没有
$this->upload->do_upload()
这是负责执行上传的功能,而且代码中没有,您可能需要阅读: File uploading Class
更新
您的代码看起来应该是这样的,
控制器:
public function create(){
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Create a new Student';
$this->form_validation->set_rules('naam', 'Naam', 'required');
$this->form_validation->set_rules('voornaam', 'Voornaam', 'required');
$this->form_validation->set_rules('text', 'Text', 'required');
if ($this->form_validation->run() === FALSE){
$this->load->view('templates/header', $data);
$this->load->view('students/create');
$this->load->view('templates/footer');
}else{
// Upload the files then pass data to your model
$config['upload_path'] = '/file_path/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile')){
// If the upload fails
echo $this->upload->display_errors('<p>', '</p>');
}else{
// Pass the full path and post data to the set_newstudent model
$this->student_model->set_newstudent($this->upload->data('full_path'),$this->input->post());
$this->load->view('students/success');
}
}
}
型号:
public function set_newstudent($path,$post){
$data = array(
'naam' => $post['naam'],
'voornaam' => $post['voornaam'],
'text' => $post['text'],
'picture'=>$path
);
return $this->db->insert('student', $data);
}
答案 1 :(得分:0)
问题在于您使用上传库的代码。您使用错误的功能上传文件。以下是正确的代码:
$config['upload_path'] = '/file_path/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
// Check file uploaded or not
if ($this->upload->do_upload('userfile')) {
$data_upload_files = $this->upload->data();
$image = $data_upload_files[full_path];
} else {
// possibly do some clean up ... then throw an error
}
此代码应该有效。