H5接入企微JS-SDK,使用wx.previewFile进行文件预览

news2024/9/28 5:34:11

最近上项目,需求是做一个附件预览并且可以进行保存到手机、用其他应用打开的需求的需求,用企微的JS-SDK的wx.previewFile就可以满足以上的需求了
详细的可以参考:企业微信官方文档

前端

1、在项目的index.html中添加:jweixin-1.2.0.js 文件
在这里插入图片描述
2、在想要使用JS-SDK的组件进行config接口注入权限验证配置,因为我这里只是目前这个组件使用,我都写到同一个vue文件中了,也可以设置成一个公共方法

  mounted() {
    // 在页面加载的时候进行调取一下
    this.handleWxConfig();
  },
  methods: {
    handleWxConfig() {
      let url = window.location.href;
      // 为了避免url带参数的时候后端接收和前端不一致,所以我这里做了一下编码,然后让后端解码一下
      getSdkSign(encodeURIComponent(url)).then((res) => {
        let { code, data, msg } = res;
        if (code === 800) {
          /**
           * 这里的wx和jWeixin是一致的,但是控制台打印出来jWeixin的方法比较全,我就用这个了
           * 因为appId/timestamp/nonceStr/signature都需要和后端保持一致,所以都让后端传回来给前端
           */

          window.jWeixin.config({
            beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: data.appId, // 必填,企业微信的corpID,必须是本企业的corpID,不允许跨企业使用
            timestamp: data.timestamp, // 必填,生成签名的时间戳
            nonceStr: data.nonceStr, // 必填,生成签名的随机串
            signature: data.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
            jsApiList: ["previewFile"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
          });
          window.jWeixin.ready(() => {
          	// 可以用checkJsApi来判断api是否可以用了
            window.jWeixin.checkJsApi({
              jsApiList: ["previewFile"],
              success: function (res) {
                // 以键值对的形式返回,可用的api值true,不可用为false
                // 如:{"checkResult":{"previewFile":true},"errMsg":"checkJsApi:ok"}
              },
            });
          });
          window.jWeixin.error(res => {
            console.log('------链接失败', res);
          })
        }
      });
    },
    handlePreviewUrl(fileInfo) {
        /**
         * 发现用wx.previewFile是不行的,使用以下方法就Ok了,并且你会发现在打开jweixin-1.2.0.js
         * 是没有previewFile这个方法的,但是并不影响使用
         */
        window.jWeixin.invoke('previewFile', {
          url: fileInfo.filePath,  // 是必填的
          name: fileInfo.fileName, // 是必填的
          size: fileInfo.fileSize, // 是必填的
        })
    }
}

对接遇到的问题

Q:config:signatur is not same
A:可以检查一下我们config注入还是agentConfig,两个获取权限是不一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两种用MATLAB绘制色块的方法

绘制色块首先可以想到用填充像素的方式 % 定义图像的尺寸 imageSize 500;% 创建一个 imageSize x imageSize x 3 的矩阵,每个像素都是绿色 % RGB颜色模型中绿色的值为 [0, 1, 0] greenImage zeros(imageSize, imageSize, 3); greenImage(:, :, 2) ones(imageSiz…

Kubeadm快速安装 Kubernetes集群

Kubernetes的基础概念 Kubernetes(通常简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。Kubernetes 提供了强大的抽象能力,使得开发者能够专注于应用程序的逻辑,而无需担心底层容器的…

某框架路由渗透

前言 某天在互联网平台上看待DWR路由的文章,然后去搜索了一下相关的信息,发现该DWR路由技术挺久远的,因此就简单的学习了一下该路由,然后发现该DWR路由也可能存在漏洞点,因此找了某站进行测试看看是否有无啥收获&…

学习笔记 韩顺平 零基础30天学会Java(2024.8.15)

P512 ArrayList底层源码2 P513 Vector注意事项 最近有点懈怠,要去新的环境上学了,有点焦虑,调整状态ing,准备开始研一,希望能继续本科的荣耀!! PS:本科应该算是荣耀的吧哈哈哈哈哈

高性价比运动耳机都有哪些?五大高性价比运动耳机推荐

对于很多人来说,大家可能会选择听音乐来放松身心,打发掉无聊的时间。开放式耳机对比入耳式耳机的优势就是既能听到耳机内的声音又能感知环境音,很适合在户外以及办公时使用。像我每天坐地铁上下班的时候都会习惯戴耳机,但以前戴入…

微信视频号评论采集秘籍:三招让你迅速收集用户反馈

在短视频盛行的今天,微信视频号以其庞大的用户基数成为品牌与用户互动的重要阵地。但如何从海量评论中迅速收集有价值的用户反馈,成为众多内容创作者与营销人员的难题。本文将揭秘三招实用技巧,助你高效采集微信视频号评论,精准把…

使用HTML和cgi控制I.MX6ULL开发板上的LED

一.HTML文件 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>LED_device</title> </head><body><form action"/cgi-bin/led.cgi" method"post"><p>LED设备号</…

夫妻双方均年过四十长期分居,离婚不仅因为不同房!李秘书专业写作:这是一篇涉离婚纠纷的民事起诉状

夫妻双方均年过四十长期分居&#xff0c;离婚不仅因为不同房&#xff01; 李秘书专业写作&#xff1a;这是一篇涉离婚纠纷的民事起诉状 &#xff08;精品范文&#xff09; 离 婚 起 诉 状 原告&#xff1a;曹某琴&#xff0c;女&#xff0c;现年40岁&#xff0c;汉族&#x…

Web前端 - HTML、CSS

w3school 在线教程 Vscode工具&#xff1a; Live Preview: 右键show Preview 实时预览效果 Live Preview: HTML AI助手 CSS (Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档&#xff08;如 HTML 文档或 XML 应用&#xff0…

PHP校园跑腿跳蚤市场助手系统小程序源码

&#x1f3c3;‍♀️&#x1f6cd;️【校园新风尚】跑腿跳蚤市场助手系统&#xff0c;便捷交易新体验&#xff01;&#x1f389; &#x1f680;一键下单&#xff0c;跑腿无忧 学习太忙没时间取快递&#xff1f;食堂太远懒得动&#xff1f;校园跑腿助手系统来帮你&#xff01;…

分子筛自动填充高原制氧机的特点

在高原地区&#xff0c;氧气稀薄&#xff0c;对人体的正常生理活动带来了诸多挑战。而分子筛自动填充高原制氧机的出现&#xff0c;为解决高原缺氧问题提供了有效的解决方案。以下是这种制氧机的一些特点&#xff1a; 高效制氧能力&#xff1a; 分子筛自动填充高原制氧机采用先…

PS DRAM接口的函数式编程模型(二)

DRAM Input Impedance (ODT) Calibration&#xff08;DRAM输入阻抗校准&#xff09; ODT技术通过在DRAM内部集成终结电阻&#xff0c;实现对信号线的终端匹配。当DRAM作为接收器时&#xff0c;ODT电阻能够吸收信号线上的反射波&#xff0c;防止信号反射对后续信号造成影响&…

职业院校云计算实训室建设方案全景剖析

在信息化社会的今天&#xff0c;云计算作为一项关键技术&#xff0c;正在迅速改变着教育和培训的方式。本文旨在探讨如何通过"职业院校云计算实训室建设方案"&#xff0c;为学生提供一个现代化、高效的学习和研究环境&#xff0c;以适应云计算技术的发展和市场需求。…

cpp depends源码有向图分析工具

使用 cpp-dependencies.exe --dir ./example --output image.dot 输出 参考 GitHub - tomtom-international/cpp-dependencies: Tool to check C #include dependencies (dependency graphs created in .dot format) 创作不易&#xff0c;小小的支持一下吧&#xff01;

06-图3 六度空间(C)

这个很好想&#xff0c;尤其是经过图的连通集&#xff0c;所以这一次我才有之前写的代码为主体以邻接表的方法构建了方法一&#xff0c;至于运用 邻接矩阵&#xff0c;可以查看我之前的图的连通集这一方案&#xff0c;稍微改装&#xff0c;便解决这一问题了。 “六度空间”理论…

【数据结构】PTA 带头结点的链式表操作集 C语言

本题要求实现带头结点的链式表操作集。 函数接口定义&#xff1a; List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下&#xff1a; typedef struc…

Prism框架

使用 NuGet包下载 -- > Prism.Unity 框架中的数据与行为 BindableBase 在ViewModel中需要继承此类 通知属性的三种方式&#xff1a; public class MainViewModel : BindableBase {// 基本的通知属性private string _value;public string Value{get { return _value; }s…

SOMEIP_ETS_049: echoUTF8DYNAMIC_length_too_long_for_String

测试目的&#xff1a; 验证设备&#xff08;DUT&#xff09;是否能够正确处理一个长度大于实际字符串长度的echoUTF8DYNAMIC字符串&#xff0c;并返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个长度超出实际字符串长度的UTF8DYNAMIC字符串的SOME/IP消息时&#xff…

Vue的生命周期理解,简单易理解

什么是Vue的生命周期 简单来说&#xff0c;Vue的生命周期就是vue实例从创建到销毁的一个过程&#xff0c;即从创建–>初始化数据–>编译模板–>挂载Dom -->渲染、更新 -->渲染–>销毁 的一系列过程。 Vue的生命周期有哪些阶段 Vue的生命周期&#xff0c;主…

使用 preloadRouteComponents 提升 Nuxt 应用的性能

title: 使用 preloadRouteComponents 提升 Nuxt 应用的性能 date: 2024/8/19 updated: 2024/8/19 author: cmdragon excerpt: preloadRouteComponents 是提升 Nuxt 应用性能的一个简单而有效的工具。通过在适当的时候预加载路由组件&#xff0c;你可以为用户提供更快速、更流…