$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = 'slider/'; // 设置附件上传(子)目录
// 上传单个文件
$info = $upload->uploadOne($_FILES['files']);
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
$url= $info['savepath'].$info['savename'];
}
return $url;
}
这个是单文件上传的时候源码,其中的 $info = $upload->uploadOne($_FILES['files']);这个位置限制住了文件上传是单文件
还有就是前端的input选择的问题
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = 'last/'; // 设置附件上传(子)目录
// 上传多个文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
foreach($info as $file){
$url .= $file['savepath'].$file['savename'].',';
}
}
return $url;
}
这个是多文件上传的方法主要的区别在于$info = $upload->upload();这个部位
以及$url .= $file['savepath'].$file['savename'].',';这部分的限制
前端的单文件,多文件区别也是很大的
这个是多文件的区别
<input type="file" name="files[]" multiple="">
官方的解释
如果需要使用多个文件上传,只需要修改表单,把
<input type='file' name='photo'>
改为
<input type='file' name='photo1'>
<input type='file' name='photo2'>
<input type='file' name='photo3'>
或者
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
两种方式的多附件上传系统的文件上传类都可以自动识别。
多文件上传的时候
还有一个问题是区分出来1,2,3.。。。n个input
//获取商品图片路径和详情图片路径
$str = $this->upload();
$count1 = count($_FILES['files1']['name']);//获取商品图片上传个数
$arr = explode(',',$str);
$slider = '';
$detail = '';
foreach ($arr as $k=>$v){
if($k+1<$count1){
$slider .= $v.',';
}else{
$detail .= $v.',';
}
}
$slider = rtrim($slider,',');
$detail = rtrim($detail,',');