我使用codeigniter上传库上传PDF,如果用户正在添加印刷品,则上传PDF,同一表格用于添加新文章。两者之间的区别在于新闻稿需要PDF,但新闻文章不需要。
但是,当我在没有将PDF添加到上传字段的情况下提交表单时,我收到错误
您没有选择要上传的文件
我怎样才能这样做,所以我没有上传文件?
function add ()
{
$data = array();
//set some validation rules
$this->form_validation->set_rules('headline', 'headline', 'required|trim');
$this->form_validation->set_rules('tagline', 'tagline', 'trim');
$this->form_validation->set_rules('userfile', 'userfile', 'trim');
$this->form_validation->set_rules('article', 'article', 'required|trim|htmlspecialchars');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('templates/admin_header.php', $data);
$this->load->view('admin/news/add');
$this->load->view('templates/footer.php');
}
else
{
//validation has been passed and we save the data and if there is one present we can upload the PDF
if($this->input->post('userfile') != "")
{
$config['upload_path'] = './assets/doc/';
$config['allowed_types'] = 'pdf';
$config['max_size'] = '5000';
$this->load->library('upload', $config);
if(!$this->upload->do_upload())
{
//try and do the upload if there is a problem we are going to show the form and an error
$data['error'] = array('upload_error' => $this->upload->display_errors());
//die(print_r($data, 'upload'));
$this->load->view('templates/admin_header.php', $data);
$this->load->view('admin/news/add', $data);
$this->load->view('templates/footer.php');
}
}
else
{
//everyhting has gone well the file has been upload so we can carry on and create an array of the POST data and the filename
//to save in the database.
//$file = $this->upload->data();
$insertData = array(
'headline' => $this->input->post('headline'),
'tagline' => $this->input->post('tagline'),
//'pdf' => //$file['file_name'],
'article' => $this->input->post('article')
);
$this->load->model('newsArticles');
$this->session->set_flashdata('sucess', 'Your news article was successfully saved');
redirect('/admin/dashboard', 'redirect');
}
}
}
答案 0 :(得分:1)
看起来你的第二个}else{
超出了if(!do_upload)
,所以你没有完成你的功能。以下是CI用户指南中的示例上传脚本:
function do_upload()
{
$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())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
只需在if
do_upload
if
检查上传文件
答案 1 :(得分:1)
错误只是说你没有选择一个文件,而你没有。当我这样做时,我只是忽略了错误并继续前进。
但有点整洁的方法是使用类似的东西:
if (isset($_FILES['userfile'])) {
// upload the file
$this->upload->do_upload();
// check errors etc
} else {
// do nothing
}