多张图片未上传仅上传最后选择的图片

时间:2019-05-16 15:28:10

标签: php codeigniter file-upload image-uploading

我正在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!');
            }
        }

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

请参阅以下代码

控制器代码

<?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;
    }
} 

?>

答案 2 :(得分:0)

//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);