Как преодолеть Unlink и загрузить изображение ошибки - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь обновить и загрузить изображение в свой каталог одновременно.В каталоге, если есть доступное изображение, сначала его отсоединяют и загружают другое, отлично.Но если изображение не существует (т. Е. Если оно является первым изображением), оно освобождается от ссылки и тоже загружает, но выдает ошибку.Я не могу понять, почему?Вот ошибка-

Сообщение: unlink (D: \ XAMPP \ htdocs \ pbulo \ assets / uploads / ads_offers /): В доступе отказано

Имя файла: controllers / management.php

Номер строки: 227

Backtrace:

Файл: D: \ XAMPP \ htdocs \ pbulo \ application \ controllers \ management.php Строка: 227 Функция: отсоединить

Файл: D: \ XAMPP \ htdocs \ pbulo \ index.php Строка: 315 Функция: require_once

Здесь находится контроллер:

public function frontOfferImage(){
if($this->session->userdata('login_answer') != null){
        $this->load->model('employee/employeemodel');


            $this->form_validation->set_rules('front_imgOffer', '', 'callback_front_img_offer_check');
            if ($this->form_validation->run() == TRUE){

                $oldimg=$this->input->post('old_front_offer_img');

        $image_with_path = FCPATH.'assets/uploads/ads_offers/'.$oldimg;

                if(file_exists($image_with_path)){
                        unlink($image_with_path);            
                    }

            $config['upload_path'] = FCPATH.'assets/uploads/ads_offers/';
            $config['allowed_types']        = 'jpeg|jpg|png';
            $config['max_size']             = 100;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;

           $this->upload->initialize($config);// $this->load->library('upload', $config); 

           if($this->upload->do_upload('front_imgOffer'))   // pd_img_3 is the name of input box.

            {


                $image_data = $this->upload->data();
                $offer_img_name = $image_data['file_name'];                     

                $data = array(
                        'front_img_offer'=>$offer_img_name,                     
                        );

            if(!$this->employeemodel->update_store_account($data)){

                $this->offerManagement();
                }else{
                    echo "Not Done";
                }

            }else{
                echo "not uploaded";
            }


            }else{
            $this->offerManagement();
        }


    }else{
            redirect('search');
        }

}

Вот представление:

<?php echo form_open_multipart('management/frontOfferImage');?>
            <div class="row">

              <div class="col-lg-8 m-1">
                  <input type="file" name="front_imgOffer" class="btn-default btn-block border btn-sm">
                  <input type="hidden" name="old_front_offer_img" value="<?php echo $store['front_img_offer']; ?>" />
                  <?php echo form_error('front_imgOffer', '<div class="text text-danger">', '</div>'); ?>
              </div>
              <div class="col-lg-2 m-1">

            <?php echo form_submit(['type'=>'submit','class'=>'btn btn-primary btn-sm','value'=>'Set New Offer']); ?>
            </div>

            </div>

      <?php echo form_close(); ?>

    </div>

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете попробовать заменить свой код следующим кодом.

$oldimg=$this->input->post('old_front_offer_img');
if($oldimg != '') {
    $image_with_path = './assets/uploads/ads_offers/'.$oldimg;

   if(file_exists($image_with_path)){
       unlink($image_with_path);            
   }
}
0 голосов
/ 06 февраля 2019

Используйте file_exists() перед попыткой удалить любой файл, используя unlink(), например:

if( file_exists('file name with path') )
{
    unlink('file name with path')
}

И я не думаю, что это плохой подход для удаления старого изображения, вместо этого вы можетесоздайте свое собственное имя для файла, используя несколько случайных чисел символов, уникальных для каждого изображения (вы можете использовать метку времени с некоторыми случайными числами, чтобы сделать его уникальным), или вы можете использовать md5(), например:

$filename = md5(date('Y-m-d H:i:s:u'));
// will return daff7fff27025b113b4d2708285f0269
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...