Php 如何在codeigniter中重置方法

Php 如何在codeigniter中重置方法,php,codeigniter,file,Php,Codeigniter,File,我有一个表单,可以同时上传许多文件和图像。 问题在于这种方法 $this->upload->display_errors() 每次循环通过此方法时,它都会保存上一循环的错误 $error[$i]= "File error: ".$this->upload->display_errors(); 例如,如果我上传了两个非法文件,它会显示这一点 索引0:不允许使用文件 索引1:不允许使用文件不允许使用文件 那么如何重置此方法? ps:我试图重置()函数,但它不起作用 更新

我有一个表单,可以同时上传许多文件和图像。 问题在于这种方法

$this->upload->display_errors()
每次循环通过此方法时,它都会保存上一循环的错误

$error[$i]= "File error: ".$this->upload->display_errors();
例如,如果我上传了两个非法文件,它会显示这一点

索引0:不允许使用文件
索引1:不允许使用文件不允许使用文件

那么如何重置此方法? ps:我试图重置()函数,但它不起作用

更新 这就是方法

          public function do_upload($product_id)
        {
            $error = array();

            if(isset($_FILES['files']['name'])&&!empty($_FILES['files']['name'][0])):

         for ($i=0; $i <count($_FILES['files']['name']) ; $i++) :


                $config['upload_path']          = './images/';
                $config['allowed_types']        = 'gif|jpg|png';
                $config['max_size']             = 1;



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





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

               if(!$this->upload->do_upload('files[]')){


 $error[$i]= "File name: ". $_FILES['files']['name'][$i] ." ". $this->upload->display_errors() ."<br>";

               }else{

              $files = $this->upload->data();

$data = array('file_name'=>$files['file_name'],'product_id'=>$product_id,'file_type'=>$files['file_type']);

               $this->Files_model->create_file($data);
               }





endfor;








  endif;
 return $error;
//end method
        }
public function do\u upload($product\u id)
{
$error=array();
如果(isset($_FILES['FILES']['name'])和&!empty($_FILES['FILES']['name'][0]):
对于($i=0;$i load->library('upload',$config));
$_文件['FILES[]']['name']=$_文件['FILES']['name'][$i];
$\u FILES['FILES[]]['tmp\u name']=$\u FILES['FILES']['tmp\u name'][$i];
$\u文件['FILES[]']['size']=$\u文件['FILES']['size'][$i];
如果(!$this->upload->do_upload('files[])){
$error[$i]=“文件名:”..$\u FILES['FILES']['name'][$i]。“$this->upload->display_errors()。
”; }否则{ $files=$this->upload->data(); $data=array('file\u name'=>$files['file\u name'],'product\u id'=>$product\u id,'file\u type'=>$files['file\u type']); $this->Files\u model->create\u file($data); } endfor; endif; 返回$error; //结束方法 }
您可以像这样重置(错误):

$this->upload->error_msg = [];

...do_upload

我们无法重置$this->upload->do_upload()

但我们可以这样重新初始化

// first upload 
$this->config->load('upload');
-- Code to upload Here -- 

// Another file
$this->config->load('upload_other_files');
-- Code to upload Here --
或者,您可以为每个文件定义多个配置数组,如下代码所示:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

$this->load->library('upload', $config);
$this->upload->initialize($config);
其他文件

$config2['upload_path'] = './uploads/';
$config2['allowed_types'] = 'gif|jpg|png';
$config2['max_size'] = '100';
$config2['max_width'] = '100';
$config2['max_height'] = '100';

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

// Alternately you can set
$this->upload->initialize($config2);

显示更多细节,代码在哪里,为什么有人否决了这个问题?这不是最好的问题,但足够好!你能给我们看一下循环吗?CodeIgniter文件上载的问题是它不能像这样很好地处理多个文件上载。我唯一能提出的建议是,你在$_文件超级全局,使用CodeIgniter一次一个地处理每个图像,然后将每个文件上载错误存储在主错误数组中…我希望这会使sensewebCode.ie变得更合理。我已经这样做了