1.小程序端点击上传图片完成时触发
onChangeTap:function(env){
//获得图片信息
var Photo=this.data.photo
//循环所有图片数据
env.detail.all.forEach(element => {
//文件上传
wx.uploadFile({
//文件路径
filePath: element,
//文件名称
name: 'file',
//上传地址
url: config.url+"up",
//成功回调
success:res=>{
//将成功后回调的图片地址添加进数组
Photo.push(res.data)
// 将添加完成的图片数组替换
this.setData({
photo:Photo
})
}
})
});
}
2.后端调用阿里云CDK进行图片上传
use OSS\Core\OssException;
use OSS\OssClient;
//引入
// 阿里云上传图片
public static function upOss($filePath,$suffix)
{
$accessKeyId=config('oss.accessKeyId');//阿里云accessKey
$accessKeySecret = config('oss.accessKeySecret');//阿里云accessKeySecret
$endpoint=config('oss.endpoint');//阿里云endpoint,也就是你的存储地址
$bucket=config('oss.bucket');//桶名
$object='wx'.md5(time().rand(0000,9999)).$suffix;//自定义的储存文件名称
try {
$ossClient=new OssClient($accessKeyId,$accessKeySecret,$endpoint);//初始化
$ossClient->uploadFile($bucket, $object, $filePath);//提供桶名,储存文件名,本地存储位置进行上传
}catch (OssException $e){
printf(__FUNCTION__.":FATLED\n");
printf($e->getMessage()."\n");
return;
}
// print(__FUNCTION__.":OK"."\n");
$url='cdn加速域名或阿里云访问域名'.$object;//访问网址
return $url;
}
3.调用方法
public function upPhoto(Request $request)
{
//获取文件路径
$file=\request()->file('file');
//截取文件后缀
$suffix=substr($file->getOriginalName(), strrpos($file->getOriginalName(), "."));
//获取临时路径
$path=$file->getRealPath();
//调用方法
return common::upOss($path,$suffix);
}