文件压缩上传

fileChange(e) {
        let that = this;
        let p1 = new Promise((resolve, reject) => {
          let file = e.target.files[0];
          let size = file.size / 1024;
          console.log('size', size);
          if (!/image\/\w+/.test(file.type)) {
            that.$vux.alert.show({
              title: '提示!',
              content: '只能上传图片格式'
            });
            return false;
          } else {
            let img = new Image();
            let reader = new FileReader();
            reader.readAsDataURL(file);
            resolve({'img': img, 'reader': reader})
          }
        });
        p1.then(obj => {
          that.readerOnload(obj).then(res => {
            let fileN = that.toFile(that.realBase64, '');
            console.log('压缩后size', fileN.size / 1024);
            let postData = {file: that.realBase64};
            api.user.uploadSignature(postData).then(res => {
              if (res.length !== 0) {
                api.user.saveSign({filePath: res}).then(data => {
                  if (data === 'success') {
                    that.$vux.alert.show({
                      title: '提示!',
                      content: '签名上传成功'
                    });
                  }
                })
              }
            }).catch(err => {
              console.log(err);
            });
          });
        });
        setTimeout(() => {
        }, 1000)
      },
      readerOnload(obj) {
        let that = this;
        let reader = obj.reader;
        let img = obj.img;
        let p2 = new Promise((resolve, reject) => {
          reader.onload = function () {
            let width = 400; // 图像大小
            let height = 120; // 图像大小
            let quality = 0.8; // 图像质量
            let canvas = document.createElement('canvas');
            let drawer = canvas.getContext('2d');
            that.imgPath = this.result;
            img.src = this.result;
            img.onload = function () {
              canvas.width = width;
              canvas.height = height;
              drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
              img.src = canvas.toDataURL('image/png', quality);
              that.realBase64 = canvas.toDataURL('image/png', quality);
              resolve(that.realBase64);
            }
          };
        });
        return p2;
      },
      toFile(dataurl, filename) {
        let arr = dataurl.split(',');
        let mime = arr[0].match(/:(.*?);/)[1];
        let bstr = atob(arr[1]);
        let n = bstr.length;
        let u8arr = new Uint8Array(n);
        while (n--) {
          u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, {type: mime});
      },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值