vue开发微信公众号之文件下载

news/2024/11/19 4:31:22/
  1. 开发微信公众号实现文件下载的时候问题就出现了,一般网站做法就用不了,因为微信内置浏览器不支持下载文件,这就需要你用外部浏览器了(一般都是用手机自带的浏览器)。
  2. 这边你需要新建一个中转页面,提醒用户要通过浏览器去下载文件。
  3. 将需要下载的文件获取到并展示在页面,通过点击文件名跳转到中转页面,然后中转页面上去打开浏览器,会自动下载文件
  4. 在需要的页面调用接口去获取文件信息并且将文件展示
    getFile() {this.$get(api.getFile + this.contentId).then(res => {console.log(res);if (res.data.state === 200) {this.contentFile = res.data.data;} else if (res.data.state === 1000) {console.log(res.data.msg);}});
    },
    
  5. 给文件信息添加点击事件并传值去往中转页面
    <aclass="files"v-for="item in contentFile":key="item.id"@click="download(item.id,item.fileName,item.fileType)">{{item.fileName}}</a>
    
    download(id, filename ,filetype) {let filePath = api.getFiles + id;console.log(filePath + ',' + filename + ',' + filetype);this.$router.push({name: "Download",params: { filePath: filePath, fileName: filename , fileType: filetype}});
    }
    
  6. 中转页面(这里一般需要判断一下是安卓系统还是iOS系统,因为iOS系统也会把链接屏蔽掉,可以做个点击复制下载链接,然后让用户自己去浏览器里粘贴下载)
    判断是否为微信浏览器
    is_weixin() {var ua = window.navigator.userAgent.toLowerCase();if (ua.match(/MicroMessenger/i) == "micromessenger") {console.log("微信浏览器");return true;} else {console.log("不是微信浏览器");return false;}
    }
    
    下载文件的方法
    download(){let is_weixin = this.is_weixin();if (is_weixin) {//是微信浏览器  显示返回按钮   (用户可以选择下载或者返回)return} else {//不是微信浏览器//执行下载axios({header: { OpenID: localStorage.openID, "Content-Type": this.fileType },method: "get",url: fileUrl,responseType: "blob"}).then(res => {console.log(res);var a = document.createElement("a");let url1 = URL.createObjectURL(res.data);console.log(url1);a.setAttribute("href", url1);a.setAttribute("download", this.fileName);a.setAttribute("target", "_blank");a.setAttribute("style", "display:blok");let clickEvent = document.createEvent("MouseEvents");clickEvent.initEvent("click", true, true);a.dispatchEvent(clickEvent);});}
    }
    
    判断是什么系统并实现下载:
    //判断是安卓终端还是苹果终端
    this.fileUrl = api.getFiles + this.id;
    this.copys = this.fileUrl;let u = navigator.userAgent;
    console.log(u);
    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;  //安卓终端
    let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);                //苹果终端 
    if (isAndroid) { //判断为安卓手机console.log('这里安卓手机');this.showBox = false;
    }else if (isIOS) {     //判断为苹果手机console.log('这里苹果手机');this.showBox = true; //判断显示的是哪一个页面,我这边设置的就是如果为true就显示iOS的页面,如果为false就显示安卓的页面
    }this.download();
    
  7. 中转页面这里就需要做两部分啦每一个是安卓系统的“从浏览器打开的”提示,一个是苹果系统的复制下载链接的部分。
    在这里插入图片描述
    这是iOS系统看到的样子
    在这里插入图片描述
    这是在安卓系统下看到的样子,样式什么的就看自己怎么写了。
  8. 点击复制下载链接的方法如下
    // 我是用的插件来实现点击复制的// 首先安装插件
    $ npm intall --save vue-clipboard2// 在 main.js 中引入
    import VueClipboard from 'vue-clipboard2'
    Vue.use(VueClipboard)// 这是HTML部分
    <div><a class="copy-a" href="javascript:;" v-clipboard:copy="copys" v-clipboard:success="copy">点击复制文件下载链接</a>
    </div>// 这里是复制成功后的一个提示,用的是element-ui里的消息提示
    copy(){this.$message({message: '复制成功',		//  提示内容center: true,				//  内容是否居中offset:300,				//  距顶部的距离duration:3500,			//  延时(提示过多久消失)type:'success'			//  提示类型});
    },
    
  9. 大体应该是这样了~

http://www.ppmy.cn/news/894737.html

相关文章

TJUACM假期集训个人赛(八)(cf789a-c cf791a-c)

这场打一半回宿舍有点事润了&#xff0c;态度不端正&#xff0c;下次改正 A. Anastasia and pebbles 题面 签到题&#xff0c;枚举每类石头即可&#xff0c; w a wa wa了一次因为判断错了&#xff0c;分两天取是 > k >k >k,不是 ≥ k \ge k ≥k #include<bits/s…

MySQL 事务与存储引擎

目录 一、MySQL事务的概念 二、事务的ACID特点 2.1 原子性 2.2 一致性 2.3 隔离性 2.4 持久性 2.5 事务之间的相互影响 三、Mysql及事物隔离级别 3.1 查询全局事务隔离级别 3.2 查询会话事务隔离级别 3.3 设置全局事务隔离级别 3.4 设置会话事务隔离级别 …

科幻字体_您可以免费获得40种科幻字体

font-face CSS规则使您无需依赖Google字体或任何高级选项&#xff0c;即可比以往更轻松地在您的网站上实现独特的字体。 您可能不希望在整个网站上使用自定义字体&#xff0c;但是在保持搜索引擎可读取的功能的同时&#xff0c;它们可以发挥很大的作用&#xff0c;使标题突出。…

23个适合logo设计的常用英文字体

在很多国外的品牌中我们都会发现他们的英文字体在logo的运用中&#xff0c;不仅会提升logo的品质还会让logo看起来更加美观。今天我们就来看看都有哪些常常出现在logo设计中的英文字体吧。 字体&#xff0c;与文字本身是不可分割的整体。它能在潜移默化间左右着你的阅读体验&am…

字体 跨域访问_21个访问量最大的免费字体网站

在设计行业中&#xff0c; 总是渴望获得好的字体 &#xff0c;这可能会增加设计的影响力。 作为设计师&#xff0c;我也总是在那里寻找新鲜的免费字体以添加到我的字体集中。 因此&#xff0c;我转向一些免费字体的最佳网站 。 因此&#xff0c;在这篇文章中&#xff0c;我将通…

字体设计 css_CSS3字体设计简介

字体设计 css 使用 font-face的Web字体 (Web Fonts with font-face) Since the early days of the Web, designers have been dreaming of creating sites with beautiful typography. But, as we know all too well, browsers are limited to rendering text in the fonts the…

程序员最爱字体_网页设计师最爱的十大字体

当我刚开始进行Web和图形设计时 &#xff0c;我总是想知道真正的设计师使用的字体。 因此&#xff0c;我进行了一项研究&#xff0c;以找出设计师喜欢使用的最受欢迎的字体&#xff0c;他们的最佳实践以及出于个人好奇心&#xff0c;他们的印刷需求 。 很高兴知道哪种字体适合哪…

字体设计基础理论知识

字体设计起源&#xff1a;主要分为汉字和拉丁字母体系 文字使人类和时间的产物 汉字七体&#xff1a;甲金篆隶楷草行 ①甲骨文&#xff08;商&#xff09; ②金文&#xff08;周&#xff09; ③大篆&#xff08;西周&#xff09; ④小篆&#xff08;秦&#xff09; ⑤隶书&…