Codeigniter 如何在codeiginter中上传多张照片?

Codeigniter 如何在codeiginter中上传多张照片?,codeigniter,file-upload,Codeigniter,File Upload,我正在尝试上传多张照片!我的代码正在运行,但它只上载了一张照片,而不是所有选定的照片 我的代码出了什么问题 if(count($_FILES["userfile"]["name"]) == 0) { $this->session->set_flashdata('success', '?? ????? ?????? ?????'); redirect('accidents/index'); } else { // configurations from uplo

我正在尝试上传多张照片!我的代码正在运行,但它只上载了一张照片,而不是所有选定的照片

我的代码出了什么问题

if(count($_FILES["userfile"]["name"]) == 0) {
    $this->session->set_flashdata('success', '?? ????? ?????? ?????');
    redirect('accidents/index');
}
else {
    // configurations from upload library
    $config['upload_path'] = './uploads/images';
    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    $config['max_size'] = '2048000'; // max size in KB
    $config['max_width'] = '20000'; //max resolution width
    $config['max_height'] = '20000';  //max resolution height
    // load CI libarary called upload
    $this->load->library('upload', $config);
    for($count = 0; $count < count($_FILES["userfile"]["name"]); $count++) {
       // body of if clause will be executed when image uploading is failed
       if(!$this->upload->do_upload()) {
           $errors = array('error' => $this->upload->display_errors());
           // This image is uploaded by deafult if the selected image in not uploaded
           $image = 'no_image.png';    
       }
       // body of else clause will be executed when image uploading is succeeded
       else {
           $data = array('upload_data' => $this->upload->data());
           $image = $_FILES['userfile']['name'];  //name must be userfile 
       }
       $this->accidents_model->addphoto($image,$last_id);
   }
}

我在for循环的代码中发现了问题,它是在上传一个文件之后重定向到索引页的(这是错误的),如果重定向行必须在for循环的外部:)

这里是经过一些修改后的完整工作代码,可以为每个用户id创建文件夹(我从stack usere这里获取代码:)非常感谢)

在上传页面我使用

 public function upload() { 
$acc = $last_id;
        $file_path = ".uploads/images/" . $acc . '/';

        if (isset($_FILES['multipleUpload'])) {

            if (!is_dir('uploads/images/' . $acc)) {
                mkdir('.uploads/images/' . $acc, 0777, TRUE);
            }

            $files = $_FILES;
            $cpt = count($_FILES ['multipleUpload'] ['name']);
            $this->load->library('upload');
            for ($i = 0; $i < $cpt; $i ++) {

                $name = $files ['multipleUpload'] ['name'] [$i];
                $_FILES ['multipleUpload'] ['name'] = $name;
                $_FILES ['multipleUpload'] ['type'] = $files ['multipleUpload'] ['type'] [$i];
                $_FILES ['multipleUpload'] ['tmp_name'] = $files ['multipleUpload'] ['tmp_name'] [$i];
                $_FILES ['multipleUpload'] ['error'] = $files ['multipleUpload'] ['error'] [$i];
                $_FILES ['multipleUpload'] ['size'] = $files ['multipleUpload'] ['size'] [$i];

                $this->upload->initialize($this->set_upload_options($file_path));

                if(!($this->upload->do_upload('multipleUpload')) || $files ['multipleUpload'] ['error'] [$i] !=0)
                {
                    print_r($this->upload->display_errors());
                }
                else
                {

                    $this->accidents_model->addphoto($name,$acc);



                }

        }            
    //======================================================================================
     }
     $this->session->set_flashdata('success', 'the files uploaded');        
        redirect('accidents/index');   // :) here must located outside for loop
       }
      }



            public function set_upload_options($file_path) {
            // upload an image options
             $config = array();
             $config ['upload_path'] = $file_path;
             $config ['allowed_types'] = 'gif|jpg|png';
             return $config;
            }
public function upload(){
$acc=$last_id;
$file_path=“.uploads/images/”$acc./”;
如果(isset($\u文件['multipleUpload'])){
如果(!is_dir('uploads/images/'.$acc)){
mkdir('.uploads/images/'.$acc,0777,TRUE);
}
$files=$\u文件;
$cpt=count($_文件['multipleUpload']['name']);
$this->load->library('upload');
对于($i=0;$i<$cpt;$i++){
$name=$files['multipleUpload']['name'][$i];
$\u文件['multipleUpload']['name']=$name;
$\u FILES['multipleUpload']['type']=$FILES['multipleUpload']['type'][$i];
$\u FILES['multipleUpload']['tmp\u name']=$FILES['multipleUpload']['tmp\u name'][$i];
$\u FILES['multipleUpload']['error']=$FILES['multipleUpload']['error'][$i];
$\u FILES['multipleUpload']['size']=$FILES['multipleUpload']['size'][$i];
$this->upload->initialize($this->set_upload_选项($file_path));
如果(!($this->upload->do_upload('multipleUpload'))|$$files['multipleUpload']['error'][$i]!=0)
{
打印($this->upload->display_errors());
}
其他的
{
$this->contractions\u model->addphoto($name,$acc);
}
}            
//======================================================================================
}
$this->session->set_flashdata('success','thefiles upload');
此处的重定向(“事故/索引”);/:)必须位于for循环的外部
}
}
公用函数集上传选项($file\u path){
//上载图像选项
$config=array();
$config['upload\u path']=$file\u path;
$config['allowed_types']='gif | jpg | png';
返回$config;
}

我在for循环中的代码中发现问题,它是在上载一个文件之后重定向到索引页的(这是错误的),如果重定向行必须在for循环之外:)

这里是经过一些修改后的完整工作代码,可以为每个用户id创建文件夹(我从stack usere这里获取代码:)非常感谢)

在上传页面我使用

 public function upload() { 
$acc = $last_id;
        $file_path = ".uploads/images/" . $acc . '/';

        if (isset($_FILES['multipleUpload'])) {

            if (!is_dir('uploads/images/' . $acc)) {
                mkdir('.uploads/images/' . $acc, 0777, TRUE);
            }

            $files = $_FILES;
            $cpt = count($_FILES ['multipleUpload'] ['name']);
            $this->load->library('upload');
            for ($i = 0; $i < $cpt; $i ++) {

                $name = $files ['multipleUpload'] ['name'] [$i];
                $_FILES ['multipleUpload'] ['name'] = $name;
                $_FILES ['multipleUpload'] ['type'] = $files ['multipleUpload'] ['type'] [$i];
                $_FILES ['multipleUpload'] ['tmp_name'] = $files ['multipleUpload'] ['tmp_name'] [$i];
                $_FILES ['multipleUpload'] ['error'] = $files ['multipleUpload'] ['error'] [$i];
                $_FILES ['multipleUpload'] ['size'] = $files ['multipleUpload'] ['size'] [$i];

                $this->upload->initialize($this->set_upload_options($file_path));

                if(!($this->upload->do_upload('multipleUpload')) || $files ['multipleUpload'] ['error'] [$i] !=0)
                {
                    print_r($this->upload->display_errors());
                }
                else
                {

                    $this->accidents_model->addphoto($name,$acc);



                }

        }            
    //======================================================================================
     }
     $this->session->set_flashdata('success', 'the files uploaded');        
        redirect('accidents/index');   // :) here must located outside for loop
       }
      }



            public function set_upload_options($file_path) {
            // upload an image options
             $config = array();
             $config ['upload_path'] = $file_path;
             $config ['allowed_types'] = 'gif|jpg|png';
             return $config;
            }
public function upload(){
$acc=$last_id;
$file_path=“.uploads/images/”$acc./”;
如果(isset($\u文件['multipleUpload'])){
如果(!is_dir('uploads/images/'.$acc)){
mkdir('.uploads/images/'.$acc,0777,TRUE);
}
$files=$\u文件;
$cpt=count($_文件['multipleUpload']['name']);
$this->load->library('upload');
对于($i=0;$i<$cpt;$i++){
$name=$files['multipleUpload']['name'][$i];
$\u文件['multipleUpload']['name']=$name;
$\u FILES['multipleUpload']['type']=$FILES['multipleUpload']['type'][$i];
$\u FILES['multipleUpload']['tmp\u name']=$FILES['multipleUpload']['tmp\u name'][$i];
$\u FILES['multipleUpload']['error']=$FILES['multipleUpload']['error'][$i];
$\u FILES['multipleUpload']['size']=$FILES['multipleUpload']['size'][$i];
$this->upload->initialize($this->set_upload_选项($file_path));
如果(!($this->upload->do_upload('multipleUpload'))|$$files['multipleUpload']['error'][$i]!=0)
{
打印($this->upload->display_errors());
}
其他的
{
$this->contractions\u model->addphoto($name,$acc);
}
}            
//======================================================================================
}
$this->session->set_flashdata('success','thefiles upload');
此处的重定向(“事故/索引”);/:)必须位于for循环的外部
}
}
公用函数集上传选项($file\u path){
//上载图像选项
$config=array();
$config['upload\u path']=$file\u path;
$config['allowed_types']='gif | jpg | png';
返回$config;
}

欢迎使用堆栈溢出!我编辑了你的问题,试图提高它的影响,修改标题,改进代码格式(缩进在这里是一个大问题),并做了一些小的语法/拼写更正。我希望你同意。这个问题已经回答了很多次了。只需搜索“codeigniter多重图像上传”,您将得到更多的工作答案。可能重复欢迎使用堆栈溢出!我编辑了你的问题,试图提高它的影响,修改标题,改进代码格式(缩进在这里是一个大问题),并做了一些小的语法/拼写更正。我希望你同意。这个问题已经回答了很多次了。只需搜索“codeigniter多重图像上传”,您将得到更多的工作答案。可能重复的