php - 如何在codeigniter中重置方法
问题描述
我有一个同时上传许多文件和图像的表单。问题是这种方法
$this->upload->display_errors()
每次循环通过此方法时,它都会保存上一轮循环的错误
$error[$i]= "File error: ".$this->upload->display_errors();
例如,如果我上传了两个非法文件,它会显示这个
索引 0:不允许
文件 索引 1:不允许文件 不允许文件
那么如何重置此方法?ps:我尝试了reset()函数,但是没有用
更新 这是方法
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
}
解决方案
我们无法重置 $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);
推荐阅读
- sql - SQL 使用 Rank 和 Row_Number 以及 Order by
- python - 将多个excel文件导入pandas并根据文件名创建列
- database - 我应该使用哪个 aws 数据库?
- reactjs - ReactJS 教程:不显示预期的唯一键警告
- python - 重新加载同一文件时内存使用量增加
- python - 置换计算运行时复杂度有一些变化
- asynchronous - 来自 websocket 的 Google Speech API 流式传输音频
- php - PHP 不工作;而是打印出代码
- android - 长按RecyclerView时让ImageView出现,释放时消失?
- php - 你仍然可以使用 PDO::quote() 被黑客入侵吗?