【问题标题】:Multiple Images not uploading Only Last Select Image Uploaded多个图像未上传仅最后选择图像已上传
【发布时间】:2019-05-16 15:28:09
【问题描述】:

我在 codeigniter 框架中上传多张图片。当我选择多张图片时,它只上传最后一张选择的图片。

下面是我的控制器代码,我哪里做错了?

$files = $_FILES;
        for($i=0; $i< count($_FILES['item_image']['name']); $i++)
        {           
            $_FILES['item_image']['name']= $files['item_image']['name'][$i];
            $_FILES['item_image']['type']= $files['item_image']['type'][$i];
            $_FILES['item_image']['tmp_name']= $files['item_image']['tmp_name'][$i];
            $_FILES['item_image']['error']= $files['item_image']['error'][$i];
            $_FILES['item_image']['size']= $files['item_image']['size'][$i];    

            $this->upload->initialize($config);
            if ($this->upload->do_upload('item_image'))
            {
                $file_name=$this->upload->data('file_name');
                $newdata = array(
                    'item_id'=>$last_id,
                    'image_name'=>$file_name
                );
                $this->Item_model->add_item_image($newdata);
                $newdatatwo = array(
                    'item_image'=>$file_name
                );
                    $this->Item_model->update_item($newdatatwo,$last_id);
                     $data['error_or_success_message'] = $this->session->set_flashdata('error_or_success_message', 'Item added Successfully!');

            }else{

                $data['error_or_success_message'] = $this->session->set_flashdata('error_or_success_message', 'Some Error, Please Try Again!');
            }
        }

【问题讨论】:

    标签: php codeigniter file-upload image-uploading


    【解决方案1】:

    for 循环中的第二个条件在 for 循环的第一行中重新定义。我会检查以确保不会导致错误。

    【讨论】:

      【解决方案2】:

      参考以下代码

      控制器代码

      <?php
      defined('BASEPATH') OR exit('No direct script access allowed');
      class Multiple_upload extends CI_Controller {
          function __construct()
          {
              parent::__construct();
              $this->load->helper('form');
              $this->load->helper('url');
          }
      
          public function index()
          {
              $this->load->view('upload');
          }
      
          public function Upload()
          {
              $files = $_FILES;
              $config['upload_path']  = 'common_assets/images';
              $config['allowed_types']    = 'jpg|gif|png';
              $config['max_size']         = '';
              $config['remove_spaces']    = true;
              $config['overwrite']        = true;
              $config['max_width']        = '';
              $config['max_height']       = '';
              $config['max_filename']     = 0;    
              foreach ($_FILES['item_image']['name'] as $key => $value)
              {
                  $_FILES['item_image']['name']= $files['item_image']['name'][$key];
                  $_FILES['item_image']['type']= $files['item_image']['type'][$key];
                  $_FILES['item_image']['tmp_name']= $files['item_image']['tmp_name'][$key];
                  $_FILES['item_image']['error']= $files['item_image']['error'][$key];
                  $_FILES['item_image']['size']= $files['item_image']['size'][$key];  
                  $this->load->library('upload', $config);
                  $this->upload->initialize($config); 
                  if (!empty($value)) 
                  { 
                      if (!$this->upload->do_upload('item_image'))
                      {
                          $error = array('error' => $this->upload->display_errors());
                          print_r($error);
                          exit();
                      }else{
                          $file_name=$this->upload->data('file_name');
                          //**********Database Entry*********************
                          // $newdata = array(
                          //     'item_id'=>$last_id,
                          //     'image_name'=>$file_name
                          // );
                          // $this->Item_model->add_item_image($newdata);
                          // $newdatatwo = array(
                          //     'item_image'=>$file_name
                          // );
                          // $this->Item_model->update_item($newdatatwo,$last_id);
                      }
                  }
              }
              echo "<pre>Uploaded Successfully"; die;
          }
      } 
      

      ?>

      【讨论】:

        【解决方案3】:
        //This works for me:
        $config['upload_path']  = 'common_assets/images';
        $config['allowed_types']    = 'jpg|gif|png';
        $config['max_size']         = '';
        $config['remove_spaces']    = true;
        $config['overwrite']        = true;
        $config['max_width']        = '';
        $config['max_height']       = '';
        $config['max_filename']     = 0;  
        
        $this->load->library('upload', $config);
        
        foreach ($_FILES as $fieldname => $fileObject) {
            if (!empty($fileObject['name'])) {
                $this->upload->initialize($config);
                if (!$this->upload->do_upload($fieldname)) {
                    $errors = $this->upload->display_errors();
                    redirect('error_page', $errors);
                } else {
                    $data = array($fieldname => $this->upload->data());
                    extract($data[$fieldname]);
                    $$fieldname = $file_name;
                }
            }
        }
        
        $array_to_save = array('tbl_name_field_1' => $file_name_from_post_1, 
                               'tbl_name_field_2' => $file_name_from_post_2);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-03-12
          • 2013-11-08
          • 1970-01-01
          • 2018-04-04
          • 2014-08-30
          • 1970-01-01
          • 2015-09-08
          相关资源
          最近更新 更多