微信小程序上传图片 语音至七牛云

将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data

以上传图片为例


示例代码:

wx.chooseImage({
  success(res) {
    const tempFilePaths = res.tempFilePaths
    wx.uploadFile({
      url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的接口地址
      filePath: tempFilePaths[0],
      name: 'file',
      formData: {
        user: 'test'
      },
      success(res) {
        const data = res.data
        // do something
      }
    })
  }
})

后台接口处理接受数据

//图片上传七牛云接口
	public function UploadFile(){
	   $param = request()->param();
 	   $file=request()->file('file');
       $controller='index';
       $accKey='you key';
       $secret='you sercret';
       $space='qqcard';
       $do='10088.cn';
       $img = new Upload();
       $url = $img->uploadImg($file,$controller,$accKey,$secret,$space,$do);
       $filePath = $image->getRealPath();
       return json(['url'=>$url]);	
	}

七牛云封装上传类

namespace Qiniu;

require_once 'autoload.php';
use Qiniu\Auth as Auth;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;

class Upload
{
    /**
     * 七牛云图片上传封装类
     * @param $image //图片名称
     * @param $controller //控制器名称
     * @param $accKey //七牛云accessKey
     * @param $secret //七牛云secretKey
     * @param $space  //七牛云上传空间
     * @param $do    //七牛云空间绑定的域名
     * @return array|string //1.成功返回图片存储的全路径;2.返回错误信息
     */
    public function uploadImg($image,$controller,$accKey,$secret,$space,$do){
        $file = $image;
        // 要上传图片的本地路径
        $filePath = $file->getRealPath();
        $ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION);  //后缀
        //获取当前控制器名称
        $controllerName = $controller;
        // 上传到七牛后保存的文件名
        $key =substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext;
        // 需要填写你的 Access Key 和 Secret Key
        $accessKey = $accKey;
        $secretKey = $secret;
        // 构建鉴权对象
        $auth = new Auth($accessKey, $secretKey);
        // 要上传的空间
        $bucket = $space;
        $domain = $do;
        $token = $auth->uploadToken($bucket);
        // 初始化 UploadManager 对象并进行文件的上传
        $uploadMgr = new UploadManager();
        // 调用 UploadManager 的 putFile 方法进行文件的上传
        list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
        if ($err !== null) {
            return ["err"=>1,"msg"=>$err];
        } else {
            //返回图片的完整URL
            return "http://"."{$do}"."/".$key;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/myzhou2017/article/details/85162113