如何使用codegniter上传多个图像

问题描述:

我想上传多个图像使用codeigniter这actullay工作正常,但我想存储图像到特定的目录。 我的目录结构是如何使用codegniter上传多个图像

上传/真正/

这个目录,我想创建一个多个目录与用户ID的名称,以便目录结构变为内

uplods /实/ 20

我添加了逻辑并编写了如下代码: 考虑$ PATH = “真正的”,和$用户id = “20”

function image_upload($path,$userid) 
    { 
     $basepath = "uploads/".$path; 
     echo "base-path > ".$basepath; 
     echo "<br>working-dir > ".getcwd(); 
     chdir($basepath); 
     echo "<br>working-dir > ".getcwd(); 
     if(!file_exists($userid)){ 
      mkdir($userid); 
      chdir($userid); 
      echo "<br>Working-dir > ".getcwd(); 
      $filesCount = count($_FILES['image']['name']); 
      echo "<br> FileCount > ".$filesCount; 
      for($i = 0; $i < $filesCount; $i++){ 
       $_FILES['img']['name'] = $_FILES['image']['name'][$i]; 
       $_FILES['img']['type'] = $_FILES['image']['type'][$i]; 
       $_FILES['img']['tmp_name'] = $_FILES['image']['tmp_name'][$i]; 
       $_FILES['img']['error'] = $_FILES['image']['error'][$i]; 
       $_FILES['img']['size'] = $_FILES['image']['size'][$i]; 

       echo "<br>FILES-Array > <pre>"; 
       print_r($_FILES); 
       echo "<pre>"; 

       $config['upload_path']= "/"; 
       $config['file_name']=$userid .$i. '.jpg'; 
       $config['allowed_types']= 'jpg|png'; 
       $config['max_size']= 2048; 

       echo "<br>CONFIG-Array > <pre>"; 
       print_r($config); 
       echo "<pre>"; 

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

       if (! $this->upload->do_upload('img')) 
       { 
        $error = array('error' => $this->upload->display_errors()); 
        echo "<br>UPLOAD-ERROR > <pre>"; 
        print_r($error); 
        echo "<pre>"; 
       } 
       else 
       { 
        $da = array('upload_data' => $this->upload->data()); 
        echo "_________IMAGE UPLOADED_______"; 
       } 
      } 

     }else{ 
      echo "<br>Folder Exist ..."; 
     } 
     die(); 

和浏览器的输出是:

base-path > uploads/real 
working-dir > C:\wamp64\www\ob_03 
working-dir > C:\wamp64\www\ob_03\uploads\real 
Working-dir > C:\wamp64\www\ob_03\uploads\real\20 
FileCount > 1 
    FILES-Array > 
Array 
(
    [image] => Array 
     (
      [name] => Array 
       (
        [0] => abhi.jpg 
       ) 

      [type] => Array 
       (
        [0] => image/jpeg 
       ) 

      [tmp_name] => Array 
       (
        [0] => C:\wamp64\tmp\php336F.tmp 
       ) 

      [error] => Array 
       (
        [0] => 0 
       ) 

      [size] => Array 
       (
        [0] => 72125 
       ) 

     ) 

    [img] => Array 
     (
      [name] => abhi.jpg 
      [type] => image/jpeg 
      [tmp_name] => C:\wamp64\tmp\php336F.tmp 
      [error] => 0 
      [size] => 72125 
     ) 

) 
CONFIG-Array > 
Array 
(
    [upload_path] =>/
    [file_name] => 180.jpg 
    [allowed_types] => jpg|png 
    [max_size] => 2048 
) 
_________IMAGE UPLOADED_______ 

我不上打印print_r($error);得到任何错误,但图像没有上传到我的目录为什么?

+1

可能会发生,因为你没有告诉它!您能否看到您将上传路径设置为“/”。它在你的代码和你的输出中都这么说。 – TimBrownlaw

+0

当我将上传路径设置为[upload_path] => uploads/real/18时,我从错误数组[错误]中获得错误=> 上传路径似乎不是有效的。 –

+0

当你使用mkdir时,你的路径是否被创建?它们存在吗?您的基本文件夹是否具有正确的权限? – TimBrownlaw

尝试使用FCPATH进行上传有时效果会更好。

FCPATH:路径的前端控制器(本文件)(CI根)

$config['upload_path'] = FCPATH . 'uploads/real/18/'; 

或者尝试

$config['upload_path'] = './uploads/real/18/'; 

确保您的图片上传文件夹设置0777。