я хочу загрузить два изображения, но вставив только одно изображение - PullRequest
0 голосов
/ 11 июля 2019

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

мой код вид

<?php echo form_open_multipart('upload/file_data');?>

  <div class="form-group">
    <label for="product_name">Product Name*:</label>
    <input type="text" class="form-control" name="product_name" value="<?= set_value('product_name'); ?>" id="product_name">
  </div>
  <div class="form-group">
    <label for="product_price">product price :</label>
    <input type="text" class="form-control" name="product_price" value="<?= set_value('product_price'); ?>" id="product_name">
  </div>
  <div class="form-group">
    <label for="product_image">Select Image*:</label>
    <input type="file" name="product_image" class="form-control"  id="product_image">
  </div>
  <div class="form-group">
    <label for="product_banner">Select banner Image*:</label>
    <input type="file" name="product_banner" class="form-control"  id="product_banner">
  </div>
   <div class="form-group">
    <label for="cat_id">cat :</label>
     <select name="cat_id" id="cat_id">
  <option value="Veg">Veg</option>
  <option value="Fruits">Fruits</option>
  <option value="Snacks">Snacks</option>

</select> 
  </div>
  <a href="<?=base_url();?>" class="btn btn-warning">Back</a>
  <button type="submit" class="btn btn-success">Submit</button>
</form>

это контроллер

public function file_data(){
        //validate the form data 

        $this->form_validation->set_rules('product_name', 'product_price', 'required');

        if ($this->form_validation->run() == FALSE){
            $this->load->view('upload_form');
        }else{

            //get the form values
            $data['product_name'] = $this->input->post('product_name', TRUE);
            $data['product_price'] = $this->input->post('product_price', TRUE);
            $data['cat_id'] = $this->input->post('cat_id', TRUE);

            //file upload code 
            //set file upload settings 
            $config['upload_path']          = APPPATH. '../assets/uploads/';
            $config['allowed_types']        = 'gif|jpg|png';


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

            if ( ! $this->upload->do_upload('product_banner')){
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('upload_form', $error);
            }
            else{

                //file is uploaded successfully
                //now get the file uploaded data 
                $upload_data = $this->upload->data();

                //get the uploaded file name
                $data['product_image'] = $upload_data['file_name'];
                $data['product_banner'] = $upload_data['file_name'];


                //store pic data to the db
                $this->pic_model->store_pic_data($data);

                redirect('/');
            }
            $this->load->view('footer');
        }
    }

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

1 Ответ

0 голосов
/ 12 июля 2019

Попробуйте это:

public function file_data(){
    //validate the form data 

    $this->form_validation->set_rules('product_name', 'product_price', 'required');

    if ($this->form_validation->run() == FALSE){
        $this->load->view('upload_form');
    }else{

    //get the form values
    $data['product_name'] = $this->input->post('product_name', TRUE);
    $data['product_price'] = $this->input->post('product_price', TRUE);
    $data['cat_id'] = $this->input->post('cat_id', TRUE);
    $image = $this->product_image(); // this function upload image and return image name
    $banner = $this->product_banner(); // this function upload baner and return banner name

            //get the uploaded file name
            $data['product_image'] = $image;
            $data['product_banner'] = $banner;

            //store pic data to the db
            $this->pic_model->store_pic_data($data);
            redirect('/');
    }
}

сделать новую функцию загрузки изображения и баннера

private function product_image(){
    $this->load->library('upload');
    $_FILES['userfile']['name']     = $_FILES['product_image']['name'];
    $_FILES['userfile']['type']     = $_FILES['product_image']['type'];
    $_FILES['userfile']['tmp_name'] = $_FILES['product_image']['tmp_name'];
    $_FILES['userfile']['error']    = $_FILES['product_image']['error'];
    $_FILES['userfile']['size']     = $_FILES['product_image']['size'];
    $this->upload->initialize($this->upload());
    if(!$this->upload->do_upload()):
    $this->load->view('upload_form', $error);
     $this->load->view('footer');
    else:
        $fileData = $this->upload->data();
        $image = "image-".$fileData['file_name'];
    endif;
    return $image;

}

private function product_banner(){
    $this->load->library('upload');
    $_FILES['userfile']['name']     = $_FILES['product_banner']['name'];
    $_FILES['userfile']['type']     = $_FILES['product_banner']['type'];
    $_FILES['userfile']['tmp_name'] = $_FILES['product_banner']['tmp_name'];
    $_FILES['userfile']['error']    = $_FILES['product_banner']['error'];
    $_FILES['userfile']['size']     = $_FILES['product_banner']['size'];
    $this->upload->initialize($this->upload());
    if(!$this->upload->do_upload()):
    $this->load->view('upload_form', $error);
     $this->load->view('footer');
    else:
        $fileData = $this->upload->data();
        $banner = "baner-".$fileData['file_name'];
    endif;
    return $banner;

}

private function upload(){
    $config = array();
    $config['file_name'] = "example_name";
    $config['upload_path']  = APPPATH. '../assets/uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = '0';
    return $config;
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...