Как я могу продолжать обновлять изображения или файлы, но не удалять и не терять другой файл? PHP Codeigniter - PullRequest
0 голосов
/ 05 апреля 2020

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

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

public function edit_images($id){
        // Upload Multiple Images

        $number_of_file = sizeof($_FILES['userfile']['tmp_name']);
        $file = $_FILES['userfile'];

        $files = array();

        // Faking upload calls to $_FILE
        for ($i = 0; $i < $number_of_file; $i++) :

            $_FILES['userfile']['name']     = $file ['name'][$i];
            $_FILES['userfile']['type']     = $file ['type'][$i];
            $_FILES['userfile']['tmp_name'] = $file ['tmp_name'][$i];
            $_FILES['userfile']['error']    = $file ['error'][$i];
            $_FILES['userfile']['size']     = $file ['size'][$i];

            $config['upload_path'] = './assets/images/activities';
            $config['allowed_types'] = 'gif|jpg|png';
            $this->load->library('upload', $config);

            $this->upload->initialize($config);
            $this->upload->do_upload('userfile');

            //$data = $this->upload->data();

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

            //$data= implode(",",$userfile);
            //$this->blog->blog_img($data);

                //redirect('/admin/blog/img/insert');
        endfor;

        $data= implode(",",$files);

        $this->post_model->edit_images($id, $data);
        redirect('posts/edit/'.$id);
    }

Моя модель

public function edit_images($id, $files){
    $field_question = array(
        'act_photo' => $files,
    );

    $this->db->where('id', $id);
    return $this->db->update('questions', $field_question);
}

и My View - я взорвал файлы, чтобы получить их уникальным образом

<?php echo form_open_multipart('posts/edit_images/'.$questions['id']); ?>

        <?php foreach($activities as $activity): ?>

            <?php   $images=explode(',', $activity['act_photo']);
            foreach($images as $key => $image): ?>
                  <table class="table">
                  <tr>
                       <td><img style="border: 2px solid black;" class="img-responsive" src="<?php echo base_url('assets/images/activities/').$image;?>" /></td>
                       <td><input type="file" name="userfile[]" size="20" /></td>
                      <input type="text" name="imgFile" value="<?php echo $image ?>" />
                   </tr>
                </table>
            <?php endforeach; ?> 
    <?php endforeach; ?>

<button type="submit" class="btn btn-block btn-dark btn-md"><h6>Change Images</h6></button>

1 Ответ

0 голосов
/ 05 апреля 2020

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

HTML

<tr>
   <td>
        <img style="border: 2px solid black;" class="img-responsive" src="<?php echo base_url('assets/images/activities/').$image;?>" />
    </td>
   <td>
          <input type="file" name="userfile[]" size="20" />
    </td>
    <!-- passing previous images string -->
       <input type="hidden" name="images" value="<?php echo $activity['act_photo'] ?>" />
    <!-- passing this single image path -->
        <input type="hidden" name="imgFile" value="<?php echo $image ?>" />
</tr>

Контроллер

public function edit_images($id){
    //add following lines to the controller
    $prev_image = $this->input->post("imgFile"); //you can unlink images besed on this string
    $prev_images = $this->input->post("images");
    $cur_images = implode(",",$files);

    $images = str_replace(",".$prev_image.",",$cur_images,prev_images); //search for ,image, format
    $images = str_replace($prev_image.",",$cur_images,images); //search for image, format
    $images = str_replace(",".$prev_image,$cur_images,images); //search for ,image format
//you can preform exact above with regex with less code.

    $this->post_model->edit_images($id,$images);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...