Загрузка эталонного изображения базы данных Неправильное имя файла сохранено - PullRequest
0 голосов
/ 15 января 2019

Я учу себя codeigniter, поэтому я использовал класс загрузки изображений с сохранением имени в SQL и сохранением изображения в папке на сервере. Когда вы вызываете имя с сервера, оно будет отображаться из файла.

Так что это прекрасно работает, но мне было любопытно перезаписать изображения, поэтому я проверил документацию codeignter по загрузке файлов, и у них есть функция файла encrypt_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'];?>">

1 Ответ

0 голосов
/ 15 января 2019

Сначала добавьте следующую строку конфигурации кода, чтобы избежать перезаписи $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'];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...