前言
大家都知道微信小程序提交图片只能一张一张的提交,如果需要一次性提交多张图片,那么一般的方法都是进行循环提交。那么使用图片转base64,然后后台再将base64转成图片就可实现一次性提交多张图片了。我使用的uniapp与php配合上传图片,话不多说,直接上代码。
前端代码
let images = [];
var last = this.fileList.length - 1;
var _this = this;
this.fileList.forEach((value,index)=>{
wx.getFileSystemManager().readFile({
filePath: value.url,
encoding:"base64",
success: function (data){
images.push(data.data);
if(index==last){
_this.testCommitImages(images);
}
},
});
});
testCommitImages(images){
this.api.Post('/testImages', {images:JSON.stringify(images)}, (res) => {
if(res.data.code == 1) {
console.log(res.data.msg);
}else {
this.$u.toast(res.data.msg, 2000);
}
})
}
后台代码
public function testImages(){
$images = I("images/s",'','strip_tags');
$images=json_decode($images,true);
$path = "test/".date("Ymd",time());
if (!is_dir($path)){
mkdir($path,0777,true);
}
$success_num = 0;
foreach($images as $image){
$imageName = "0312_".date("His",time())."_".rand(1111,9999).'.png';
$imageSrc= $path."/". $imageName;
$image_str = base64_decode($image);
$r = file_put_contents($imageSrc, $image_str);
if($r){
$success_num++;
}
}
$this->S(json_encode($success_num));
}
总结
以上就是今天要讲的内容,本人已经亲测有效。
|