我正在自学codeigniter,所以我使用了图像上传类,将名称存储在SQL中,并将图像存储在服务器中的文件夹中。当您从服务器调用名称时,它将在文件中显示。
这样可以正常工作,但是我对覆盖图像感到好奇,因此我检查了关于文件上传的codeignter文档,它们具有crypto_file文件功能。这样就可以解决覆盖问题,因为自从我用它存储在数据库中的文件名是原始文件以来,而存储在服务器上我的文件夹中的映像却具有加密的文件名,因此照片不显示。
我已经遍历了codeigniter的文档,试图加载另一个文件名变量,依此类推。我也尝试每次也初始化配置。
“库上载”控制器是自动的。
if($this->form_validation->run()=== FALSE) {
$this->load->view('templates/header');
$this->load->view('posts/create', $data);
$this->load->view('templates/footer');
}
else{
//Upload image
$config['upload_path'] = 'assets/images/posts';
$config['allowed_types'] = 'gif|jpg|png';
$config['encrypt_name'] = TRUE; //TURN ON
$config['max_size'] = 0;
$config['max_width'] = 0;
$config['max_height'] = 0;
$this->upload->initialize($config);
if(!$this->upload->do_upload('userfile')){
$errors = array('error'=>$this->upload->display_errors());
$post_image = 'noimage.jpg';
}else {
$data = array('upload_data' =>$this->upload->data());
$post_image = $_FILES['userfile']['name'];
}
$this->Post_Model->create_post($post_image);
redirect('http://localhost/CI/');
}
}
模型
public function create_post($post_image){
$slug = url_title($this->input->post('title'));
$data=array('title' => $this->input->post('title'),
'slug' => $slug,
'body' => $this->input->post('body'),
'category_id' => $this->input->post('category_id'),
'post_image' =>$post_image
);
表格
<img src="assets/images/posts/<?php echo $post['post_image'];?>">
答案 0 :(得分:1)
首先,添加以下代码配置行,以免覆盖$config['overwrite'] = false
第二,将实际值赋予max_size
,max_width
和max_height
不为零
$config['max_size'] = 1000;
$config['max_width'] = 430;
$config['max_height'] = 430;
$config['overwrite'] = false;
文件上传的位置做了一些更改
if(!$this->upload->do_upload('userfile')){
$errors = array('error'=>$this->upload->display_errors());
$post_image = 'noimage.jpg';
}else {
$data = $this->upload->data();
$post_image = $data['file_name'];
}