微信小程序+PHP实现文件上传七牛云
1.wxml代码:
<l-image-picker count="3" bind:linchange="onChangeTap" />
2.js代码:
onChangeTap(e){ //获取所有的图片,类型是一个数组 var image=e.detail.all var _this=this //循环这个数组 for(var i=0;i<image.length;i++){ // 微信小程序内置的上传文件的方法 wx.uploadFile({ //单个图片 filePath: image[i], //传到后台的名字 name: 'image', //请求的网址 url: 'http://www.day13.com/home/Image/uploads', //请求成功后回调函数 success: function(res){ //进行转义,否则图片无法正常显示 var name=JSON.parse(res.data) //给转义后的名字覆给一个变量 var n=name.path //追加到data中提前定义好的list数组中 _this.data.list.push(n) } }) } }
3.后台TP5代码:
public function uploads(){ //接收文件上传的值 $file = $_FILES; //本地的文件路径 $localFilePath = $file['image']['tmp_name']; //截取文件后缀名 //$suffix = '.jpg'; $suffix = strtolower(substr($file['image']['name'],strpos($file['image']['name'],'.'))); //生成一个唯一的文件名称,重命名 (md5加密原文件名+秒+随机数) $fileName = md5($file['image']['name']) . date('s',time()) . rand(1,9999999); $fileName .= $suffix; //上传七牛云业务逻辑 这两个密钥获取在主页鼠标放到头像后点击密钥管理获取 $accessKey = '去控制台的秘钥管理拿AK'; //去控制台的秘钥管理拿AK $secretKey = '去控制台的秘钥管理拿SK';//去控制台的秘钥管理拿SK $auth = new Auth($accessKey, $secretKey); //七牛云桶名,根据自己实际进行填写 $bucket = '七牛云桶名'; // 生成上传Token $token = $auth->uploadToken($bucket); // 构建 UploadManager 对象 $uploadMgr = new UploadManager(); // 调用 UploadManager 的 putFile 方法进行文件的上传。 list($ret, $err) = $uploadMgr->putFile($token, $fileName, $localFilePath); //错误信息提示 if ($err != null) { //可调整为错误页面 $this->error('上传文件失败'); } //把七牛云图片路径存储到我们自己的数据库 七牛云图片路径 此网址填写自己的网址 $imageUrl = 'http://此网址填写自己的网址/' . $fileName; //返回文件名称 return json(['path'=>$imageUrl]); }