关于h5,页面分享到朋友圈、钉钉、微信等,(base64图片转换成文件)

实现内容:将页面分享到朋友圈、钉钉、微信。
主要思想如图:
在这里插入图片描述

      <div class="header-right" @click="shareDetail">分享</div>
          /**
     * 分享链接(微信、朋友圈、钉钉、工作圈)
     */
    async shareDetail() {
      this.$nextTick(() => {
        html2canvas(this.$refs.main, {   //利用canvas将画面截图下来
          width:
            window.innerWidth ||
            document.documentElement.clientWidth ||
            document.body.clientWidth,
          height: this.$refs.main.offsetHeight,
        }).then(async (canvas) => {
          //canvas为转换后的Canvas对象
          console.log("canvas------",canvas)
          let img = canvas.toDataURL("images/png");  //导出图片
          console.log("img------",img)
          let url = await this.getOss(img);   //拿到直接可以浏览图片的路径

          this.isUploading = false;
          this.shareWeb(JSON.stringify({ type: 4, url }));
        });
      });
    },
        /**
     * 生成oss链接
     */
    async getOssUrl(dataUrl) {
      let file = this.base64ToFile(dataUrl);   //将base64得图片转换成文件

      try {
        let res = await commonApi.getOss();  //获取图片上传的一些
        console.log(res.data)
        let data = JSON.parse(res.data);
        let randomNum = Math.random().toString().replace(".", "");
        let ossParams = {
          policy: data.policy,
          OSSAccessKeyId: data.accessid,
          signature: data.signature,
          key: `${data.dir}${randomNum}.${file.type.split("/")[1]}`,  //拼接完成类似于front/2020/10/30/随机数.png(后缀名)
        };
        let formData = new FormData();
        for (let i in ossParams) {
          formData.append(i, ossParams[i]);
        }
        formData.append("file", file);

        await postOss(data.host, formData); //请求接口,接口返回直接可以浏览图片的路径

        return `${data.host}/${ossParams.key}`;   
      } catch (e) {}
    },
    Vue.prototype.shareWeb = function shareWeb(data) {
  try {
    const device = whichdevice();   //判断是什么设备(函数省略)
    if (window.webview || window.webkit) {
      if (device.android) {
        window.webview.shareWeb(data);
      } else if (device.ios) {
        window.webkit.messageHandlers.shareWeb.postMessage(data);
      } else {
        console.error("非ios或Android设备");
      }
    } else {
      console.error("webview方法未注册");
    }
  } catch (e) {
    console.error("无法调设备shareWeb方法");
  }
};

一些后台输出内容
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093549427.PNG#pic_center
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值