好的,所以我现在已经搞乱了几个小时,阅读文档和浏览论坛,但我无法找出为什么这个上传表单不起作用。
整个表单完美运行,数据保存到数据库和所有内容。但我刚添加了一个图像上传输入,它不起作用!我已经按照文档中的确切教程以及其他几个教程进行了操作。
以下是处理表单提交的代码($this->page_m
是我的模型):
public function edit ($id = NULL)
{
// Fetch a page or set a new one
if ($id) {
$this->data['page'] = $this->page_m->get($id);
count($this->data['page']) || $this->data['errors'][] = 'page could not be found';
}
else {
$this->data['page'] = $this->page_m->get_new();
}
// Pages for dropdown
$this->data['pages_no_parents'] = $this->page_m->get_no_parents();
// Process the form
if ($this->form_validation->run('page_rules') == TRUE) {
$data = $this->page_m->array_from_post(array(
'title',
'slug',
'body',
'template',
'parent_id'
));
if(!empty($_FILES['userfile'])) {
$this->do_upload();
}
$this->page_m->save($data, $id);
redirect('admin/page');
}
// Load the view
$this->data['subview'] = 'admin/page/edit';
$this->load->view('admin/_layout_main', $this->data);
}
以下是处理照片上传的代码,该代码在$this->form_validation->run()
检查后立即调用:
//upload a slider photo
public function do_upload() {
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => site_url('uploads/')
);
$this->load->library('upload');
$this->upload->initialize($config);
$field_name = "userfile";
if ( ! $this->upload->do_upload($field_name)) {
$this->data['error'] = array('error' => $this->upload->display_errors());
$this->data['subview'] = 'admin/page/edit';
$this->load->view('admin/_layout_main', $this->data);
} else {
return true;
}
}
为了调试目的,我故意使这个上传脚本尽可能简单和基本,但我仍然没有成功地使这个表单正确上传。
在我上传工作后,我需要将图像名称保存在我的数据库表中,但这就是现在的重点。我只需要实际上传。
已解决 - 无效上传目录
答案 0 :(得分:1)
要调试脚本,您应该尝试回显$this->upload->display_errors();
如果将{} else {}语句改为以下内容,请尝试更改do_upload()方法:
if ( ! $this->upload->do_upload($field_name)) {
// return the error message and kill the script
echo $this->upload->display_errors(); die();
$this->data['error'] = array('error' => $this->upload->display_errors());
$this->data['subview'] = 'admin/page/edit';
$this->load->view('admin/_layout_main', $this->data);
} else {
return true;
}
希望这可以帮助您找出造成问题的原因。
答案 1 :(得分:0)
与我的问题相同,我通过升级CodeIgniter解决了这个问题,
我的旧版本是3.1.2,然后我只升级到CI-3.1.3,
只需替换根文件夹中的系统文件夹,
之后,问题在实时服务器中解决,
我希望我的建议对我们有用