这已经被问了很多,但在尝试了很多事情之后,我仍然无法找到解决这个问题的原因。
我自动加载上传库。
我的文件夹结构是:
/application/
/assets/
css/
images/
hero/
js/
/system/
我的控制器:
$fileName = $this->input->post('title') . '_hero';
$filePath = './assets/images/hero/';
$config['allowed_types'] = 'gif|jpg|png';
$config['overwrite'] = true;
$this->upload->initialize($config);
if (!empty($_FILES['heroimage'])) {
$config['file_name'] = $fileName;
$config['upload_path'] = $filePath;
if (!$this->upload->do_upload('heroimage')) {
$error = array('error' => $this->upload->display_errors());
var_dump($error);
} else {
$data = array('upload_data' => $this->upload->data());
var_dump($data);
}
}
我已尝试初始化它现在的状态并使用$this->load->library('upload', $config);
,但两者都没有效果。
我还检查了目录是否存在以及它是否可写并且都返回true。
我尝试的另一件事是将上传路径设置为$config['upload_path'] = FCPATH.'assets\images\hero';
任何帮助我指向正确方向的人都将不胜感激。
答案 0 :(得分:3)
您应该拥有配置数据,例如因为文件路径未初始化
https://www.codeigniter.com/user_guide/libraries/file_uploading.html#setting-preferences
$fileName = $this->input->post('title') . '_hero';
$filePath = './assets/images/hero/';
$config['upload_path'] = $filePath;
$config['allowed_types'] = 'gif|jpg|png';
$config['overwrite'] = true;
$this->upload->initialize($config);
if (!empty($_FILES['heroimage'])) {
if (!$this->upload->do_upload('heroimage')) {
// errors
} else {
$upload_data = $this->upload->data();
echo $upload_data['file_name'];
}
}