微信小程序开发---实现文件上传和下载

在开发小程序的过程中,我们难免会遇到使用小程序对后端发送文件;或者接收后端的文件,本文章将手把手带你简单高效实现微信小程序的文件上传下载功能

前期准备

由于目前小程序保护用户个人隐私力度加大 ,因此我们要想实现文件上传,先要到微信公众平台申请权限,进入设置中的服务内容与声明
在这里插入图片描述

我们在点击更新用户隐私保护指引,在里面我们发现没有找到相应的文件选项,那我们就点击自定义,点击确认之后就会出现选项框供你选择,就按照我下面的填写并且提交之后等待审核通过就可以开发相应的文件上传下载接口
在这里插入图片描述
在这里插入图片描述

文件上传

作者是使用HbuilderX进行开发,但是方法都是一致的,只需要按需更改调用主体就行(例如:wx;uni)

首先是选择文件,微信小程序上传文件的机制是,先我们用户选取的文件创建一个零时的存放路径,等待我们点击上传的时候就可以直接将上传文件的零时路径携带在网络请求中给后端,此时后端就可以接收到文件,并且在发送文件的时候不是像之前一样使用uni.request(wx.request)而是需要使用formData格式的请求体使用专门的上传方法

需要使用uploadFile方法上传文件,使用formData来存储我们的其他一些JSON格式的数据,比如要让后端知道这是什么文件,是第几个文件之类的信息

<uni-file-picker @select="saveRelatePath" limit="1" file-mediatype="all" title="上传资料"></uni-file-picker>
<!--@select方法是我们选取的文件之后,执行的方法,在我们选取文件之后需要将文件的零时路径进行保存 -->
<button @click="updata" type="primary">确认上传</button>
<script>
export default{data(){return {filePath:''//存放文件的临时目录}},method:{saveRelatePath(file){this.filePath = path.tempFilePaths[0]//将文件的临时地址保存下来},updata(){var _this = this //保存当前对象指针,用于获取到来刚刚保存的filePathuni.uploadFile({url: 'https://XXX.XXX.XX/XXX/', // 上传文件的服务器接口地址filePath: _this.filePath, // 选择的文件的临时路径name: 'file', // 服务器接收文件的字段名formData: {//放入JSON格式数据},success: function (res) {console.log(res)//打印后端返回的数据}})}}
}
</script>

文件下载

一般在开发的时候我们要下载文件一般就是小程序端向后端提供的指定URL接口发送我们要请求哪个文件,一般后端会告诉让你告诉他你要的文件是名字之类的信息。我们如果将这些信息放到请求体data里面无法正确请求文件信息,那么我们这时可能就需要将文件名拼接到之前的URL

<button @click="download">下载 </button>
<script>
export default{data(){return {fileName = 'XXXXXX'}},method:{download(){const filePath =`${wx.env.USER_DATA_PATH}/test.xlsx`//下载文件存储在当前微信的临时文件夹下,文件名为test,格式为xlsxvar _this = thisuni.downloadFile({//1.将文件信息放在请求体中//url: 'https://XX/XX/XX' ,//data:{//	fileName = _this.fileName//下载的文件名//},//2.将请求体拼接在URL上//注意有的可能使用斜杠 / 来进行分割有的时需要使用 ?name = "XXX"这种形式,一定要和后端确定号后端时用什么形式接收参数url: 'https://XX/XX/XX/' + _this.fileName,success: function (res) {//文件下载成功使用getFileSystemManager管理文件uni.getFileSystemManager().saveFile({//将文件保存到目前零时文件下tempFilePath: res.tempFilePath,filePath: filePath,success: function (res_) {if(res.statusCode === 200){//文件保存成功之后就可以打开文件uni.openDocument({filePath: res_.savedFilePath,showMenu: true, // 右上角显示三个点,微信自带的api,可以保存、转发文件success: function (res) {uni.showToast({title: '打开成功'});},})}else {//文件没有打开成功就报错提示uni.hideLoading()uni.showToast({icon:"error",title: '打开失败'});}},fail: function (err) {uni.showToast({icon:"error",title: '加载失败'});}})}})}}
}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进我们的生活。在教育领域&#xff0c;VR技术的应用也日益广泛&#xff0c;为传统的教育模式带来了革命性的变革。中小学生安全教育作为学生生活中的重要组成部分&#xff0c;其重要性不言而喻…

揭秘“ChatGPT之父”突遭罢免内幕:从开发者大会起,几件事已有征兆

腾讯新闻《潜望》 纪振宇 发自硅谷 美国时间11月17日午间&#xff0c;OpenAI首席执行官&#xff0c;被称为“ChatGPT之父”的山姆奥特曼突遭董事会罢免。 OpenAI在当天发布的官方声明称&#xff0c;董事会启动了一项特别的调查&#xff0c;结论是奥特曼在与董事会沟通过程中没…

牛客-- 求解立方根python

描述 计算一个浮点数的立方根&#xff0c;不使用库函数。 保留一位小数。 数据范围&#xff1a;∣val∣≤20 输入描述&#xff1a; 待求解参数&#xff0c;为double类型&#xff08;一个实数&#xff09; 输出描述&#xff1a; 输出参数的立方根。保留一位小数。 使用…

2023 OceanBase 年度发布会:砥砺自研,为“关键业务负载”打造一体化数据库

11 月 16 日&#xff0c;2023 OceanBase 年度发布会在京顺利召开。在本次发布会上&#xff0c;OceanBase 对外正式宣布&#xff1a;将持续践行“一体化”新战略&#xff0c;为关键业务负载打造一体化数据库。同时&#xff0c;会上发布一体化数据库的首个长期支持版本 OceanBase…

为什么C++标准库中atomic shared_ptr不是lockfree实现?

为什么C标准库中atomic shared_ptr不是lockfree实现&#xff1f; 把 shared_ptr 做成 lock_free&#xff0c;应该是没有技术上的可行性。shared_ptr 比一个指针要大不少&#xff1a;最近很多小伙伴找我&#xff0c;说想要一些C的资料&#xff0c;然后我根据自己从业十年经验&am…

[最新榜单] 智能手机数据恢复的 10 款最佳应用

当手机上的数据消失时&#xff0c;这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没&#xff0c;您可以使用数据恢复应用程序修复它。 在本文中&#xff0c;我们将解释一些有用的数据恢复应用程序。 数据恢复应用…

嵌入式中一篇搞定Cmake使用教程

今天分享一篇关于 cmake 的相关文章&#xff0c;通过这个工具可以生成本地的Makefile。让我们不用去编写复杂的Makefile。 引言 CMake是开源、跨平台的构建工具&#xff0c;可以让我们通过编写简单的配置文件去生成本地的Makefile&#xff0c;这个配置文件是独立于运行平台和…

【LeetCode】每日一题 2023_11_18 数位和相等数对的最大和(模拟/哈希)

文章目录 刷题前唠嗑题目&#xff1a;数位和相等数对的最大和题目描述代码与解题思路思考解法偷看大佬题解结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 本月已经过半了&#xff0c;每日一题的全勤近在咫尺~ 题目&#xff1a;数位和相等数对的最大和…

服务器端请求伪造(SSRF)

概念 SSRF(Server-Side Request Forgery&#xff0c;服务器端请求伪造) 是一种由攻击者构造形成的由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF是要攻击目标网站的内部系统。&#xff08;因为内部系统无法从外网访问&#xff0c;所以要把目标网站当做中间人来…

FreeRtos 任务切换深入分析

一、背景知识&#xff1a; 1、任务切换包含三个基本流程&#xff1a;保护现场、更新TCB、恢复现场并跳转 2、freertos的任务切换是在xPortPendSVHandler 中断函数中完成的 3、中断函数在调用之前&#xff0c;硬件已经保存了r0,r1,r2,r3,r12,r14(LR),r15(pc)&#xff0c;恢复…

C_11微机原理

一、单项选择题&#xff08;本大题共 15 小题&#xff0c;每小题 3分&#xff0c;共45分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案。&#xff09; .EXE 文件产生在&#xff08;&#xff09;之后。 A.汇编 B. 编辑 C.用软件转换 D.连接 2,十进制-61的8位二进…

实力进阶,教你使用thinkphp6开发一款商城系统

0.开篇 你好&#xff01;很高兴你能点开这个教程&#xff0c;相信你对这个教程有了那么一点点兴趣&#xff0c;接下来占用你一点点时间&#xff0c;邀你浏览一下本章内容&#xff0c;希望能够让你更加有兴趣去学完这个教程。 作者我是一名九零后程序员&#xff0c;搬砖了好几…