• 小程序封装图片上传阿里云OSS


    app.js中 写入

    wxPromisify(fn) {
      return function (obj = {}) {
        return new Promise((resolve, reject) => {
          obj.success = function (res) {
            resolve(res)
          }
          obj.fail = function (res) {
            reject(res)
          }
          fn(obj)//执行函数,obj为传入函数的参数
        })
      }
    }
    

      在utils文件夹下新建uploadOssUtil.js文件

    let app = getApp();
    
    var uploadFile = app.wxPromisify(wx.uploadFile)
    let signObj = null;
    // 上传文件到阿里云OSS
    function uploadFileToOSS(fileList) {
    
      return new Promise(function(resolve, reject) {
        let startTime = new Date().getTime()
    
        // 开始执行上传
        var promise = Promise.all(fileList.map((item, index) => {
          console.log(item)
          return new Promise(function(resolve, reject) {
            console.log("刷新上传凭证")
            wx.request({
             url:"*********",   //调用接口,让后端返回上传所需要的字段
            methods: "get",
             data:"",
            success:res=>{
        if (res.data.code == '20000') {
                signObj = res.data.data;
                var aliyunFileKey;
                console.log("上传参数" + JSON.stringify(item));
                aliyunFieKey=signObj.dir + new Date().getTime() + '_' + item.size + "." + item.type;
                console.log(aliyunFileKey);
                // console.log("上传参数" + JSON.stringify(item))
                uploadFile({
                  url: signObj.host, //上传到OSS
                  filePath: item.path,
                  name: 'file',
                  formData: {
                    'key': aliyunFileKey,
                    'OSSAccessKeyId': signObj.accessid,
                    'policy': signObj.policy,
                    'signature': signObj.signature,
                    'success_action_status': '200'
                  }
                }).then(res => {
                  item.url = signObj.host + aliyunFileKey;
                  console.log(item.url)
                  resolve(item)
                })
              } else {
                reject("获取上传凭证失败")
               }
            }
            })
          })
        })).then(res => {
          let endTime = new Date().getTime()
          console.log("上传文件完毕,共耗时:" + (endTime - startTime) + "ms")
          resolve(res)
        })
      })
    }
    

      

      最后把文件导出

    module.exports = {
      uploadFileToOSS: uploadFileToOSS
    
    };
    

      

  • 相关阅读:
    webuploader多次触发注册
    下载二进制文件
    表格打印
    多个请求下 loading 的展示与关闭
    前进刷新后退不刷新
    页面权限控制和登陆验证
    axios.post 配置formdata提交
    react错误边界
    关于beforeRouterEnter获取不到this
    JS
  • 原文地址:https://www.cnblogs.com/BySee1423/p/12613578.html
Copyright © 2020-2023  润新知