tp5批量上传图片实际上非常简单,核心原理是通过foreach循环单张图片上传,达到批量上传的目的,其本质还是单个逐一上传。我们在做下载站项目的时候做了系统配置这样的功能,这个功能是可以同时上传多张图片的,比如网站logo、二维码等等,看看我们的效果图:
批量上传的核心处理代码如下:
public function conflist(){
if(request()->isPost()){
$data=input('post.');
$dataFile=$_FILES;
foreach ($dataFile as $k => $v) {
if($v['name']!=""){
$data[$k]=$this->upload($k);
}
}
foreach ($data as $k => $v) {
db('config')->where(array('ename'=>$k))->update(['value'=>$v]);
}
$this->success('修改配置成功!');
return;
}
$confRes=db('config')->select();
$this->assign([
'confRes'=>$confRes,
]);
return view();
}
以上是逻辑,循环的时候用到的upload函数如下:
public function upload($imgName){
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file($imgName);
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH . 'public' . DS . 'static/index/uploads');
if($info){
// 成功上传后 获取上传信息
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
return $info->getSaveName();
}else{
// 上传失败获取错误信息
return '';
}