uniapp下载和上传照片

利用uniapp开发的时候,需要下载和上传照片,在H5和微信小程序中的写法不一样。

H5环境下

浏览器中下载就是模拟超链接下载。也不需要获取什么权限,比较简单。

// #ifdef H5
this.isLoading = true;
let oA = document.createElement("a");
// 设置下载的文件名,不设置就是默认的
oA.download = ''; 
// 图片下载链接
oA.href = imgUrl;
document.body.appendChild(oA);
oA.click();
oA.remove(); // 下载之后把创建的元素删除
this.isLoading = false;
// #endif

微信小程序

小程序下载需要先获取相册权限。

downloadPic() {// #ifdef MP-WEIXINthis.checkAppRight();// #endif // #ifdef H5...// #endif
},
// 先校验权限
checkAppRight() {// 检查是否之前就调用过uni.authorizeif (!this.isAuthorize) {uni.authorize({// 请求相册写入权限scope: 'scope.writePhotosAlbum',success: () => {this.downloadImgOnPhone();}});return;}// 检查当前小程序的设置信息,这个设置可以看下面的图片说明是什么设置uni.getSetting({// 这里可能会触发报错:this 为 undefined,建议使用箭头函数,不要使用普通函数,否则在小程序中调用this会报错。success: (res) => {// 如果没有相册写入权限,需要先引导用户打开设置权限if (!res.authSetting['scope.writePhotosAlbum']) {/* 打开设置的方法 */uni.showModal({title: '提示',content: '请先在设置页面打开“保存相册”使用权限',confirmText: '去设置',cancelText: '取消',success: data => {if (data.confirm) {uni.openSetting()}}});} else {this.downloadImgOnPhone();}}});
},
// 开始下载图片
downloadImgOnPhone() {this.isLoading = true;// 下载文件,必须先调用downloadFile,不然会报错。uni.downloadFile({url: imgUrl, // 图片链接success: (res) => {if (res.statusCode === 200) {// 保存下载的文件到相册uni.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: () => {this.isLoading = false;uni.showToast({title: '下载成功',icon: "none",duration: 5000})},fail: (err) => {this.isLoading = false;uni.showToast({title: '下载失败',icon: "none",duration: 5000})},})}},fail: (err) => {this.isLoading = false;uni.showToast({title: JSON.stringify(err),icon: "none",duration: 5000})}});
}

查看微信小程序的设置信息,点击设置进去即可查看,uni.openSetting接口就是会打开这个设置页面:
在这里插入图片描述
uni.authorize 申请授权,会触发底部弹窗:
在这里插入图片描述
如果小程序被用户授权成功,在openSetting页面会显示“添加到相册”,如果用户手动关掉该选项,那么下次就不应该调用uni.authorize,而是调用uni.openSettin,引导用户开启开关。
在这里插入图片描述
更多uniapp的开发文章可以关注博主,后续还会继续更新。
如果对于uview组件的开发效果感兴趣的童鞋,可以访问链接查看:https://ext.dcloud.net.cn/plugin?id=12603

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

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

相关文章

Spring Boot原理分析(二):IoC

文章目录 〇、IoC思想和IoC容器IoC体现了什么思想什么是IoC容器 一、Spring IoC容器的继承层次1.BeanFactory2.ListableBeanFactory3.HierarchicalBeanFactory4.ApplicationContext5.常用的ApplicationContext的实现类ClassPathXmlApplicationContext(基于XML配置&a…

文件IO_打开和关闭文件(附Linux-5.15.10内核源码分析)

目录 1.打开文件 1.1 函数原型介绍 1.1.1 open函数 1.1.2 creat函数 1.1.2 openat函数 1.2 内核源码分析 1.3 函数原型区别 2.关闭文件 2.1 函数原型介绍 2.1.1 close函数 2.2 内核源码实现 1.打开文件 1.1 函数原型介绍 1.1.1 open函数 #include <sys/types.…

国产MCU-CW32F030开发学习-BH1750模块

国产MCU-CW32F030开发学习-BH1750模块 硬件平台 CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件BH1750数字型光照强度传感器 BH1750 BH1750是一款数字型光照强度传感器&#xff0c;能够获取周围环境的光照强度。其测量范围在0~65535 lx。lx勒克斯&#xff0c;是光照强…

前端漏洞xss

网络钓鱼、获取Cookie、强制弹窗获取流量、网站挂马(将恶意代码嵌入程序&#xff0c;用户浏览页面时计算机将被嵌入木马)、发送垃圾信息或广告、传播蠕虫病毒 漏洞原理 XSS(Cross Site Scripting),是一种跨站的脚本攻击&#xff0c;曾简称为CSS&#xff0c; 后改为XSS。 攻击…

git下载源码及环境搭建之数据库(二)

学习目标&#xff1a; 数据库 新项目使用 数据库文件 的配置 及相关属性的设置 步骤&#xff1a; 数据库 下图所示为开发时所用数据库 第一步&#xff1a;新建一个数据库 注意&#xff1a; 字符集与排序规则我们应该选择utf-8 相关 选中新创建的表&#xff0c;点击备份—还…

备战秋招009(20230714)

文章目录 前言一、Java内存区域1、JVM组成部分2、运行时数据区域01、基础02、程序计数器03、虚拟机栈04、本地方法栈05、堆06、方法区07、直接内存 3、HotSpot虚拟机对象01、对象的创建02、内存分配03、内存布局04、访问定位 二、垃圾回收1、堆空间01、空间结构02、GC 分类03、…

Unified Named Entity Recognition as Word-Word Relation Classification

原文链接&#xff1a;https://arxiv.org/pdf/2112.10070.pdf AAAI 2022 介绍 NER主要包括三种类型&#xff1a;flat、overlap和discontinuous。目前效果最好的模型主要是&#xff1a;span-based和seq2seq&#xff0c;但前者注重于边界的识别&#xff0c;后者可能存在exposure b…

OpenCV 入门教程:自适应阈值处理

OpenCV 入门教程&#xff1a;自适应阈值处理 导语一、自适应阈值处理二、示例应用2.1 图像二值化2.2 图像去噪 总结 导语 自适应阈值处理是图像处理中常用的技术之一&#xff0c;它能够根据图像的局部特征自动调整阈值&#xff0c;从而提高图像的处理效果。在 OpenCV 中&#…

LabVIEW-实现波形发生器

一、题目 用两种方法实现一种多类型信号波形发生器&#xff08;至少包括&#xff1a;正弦波、三角波、方波等&#xff09;&#xff0c;可以调节信号频率、幅度、相位等参数&#xff0c;可以图形化显示信号波形。 需要给出产生信号波形的基本方法、程序设计基本方法以及程序实现…

SpringCloud(4) Eureka 如何主动下线服务节点

目录 1.直接停掉客户端服务2.发送HTTP请求1&#xff09;调用DELETE接口2&#xff09;调用状态变更接口 3.客户端主动通知注册中心下线1&#xff09;代码示例2&#xff09;补充3&#xff09;测试 一共有三种从 Eureka 注册中心剔除服务的方式&#xff1a; 1.直接停掉客户端服务…

慢速减压控制技术在预防同步辐射光源和原位透射电镜氮化硅窗口膜真空中破裂的应用

摘要&#xff1a;氮化硅薄膜窗口广泛应用于同步辐射光源中的扫描透射软X射线显微镜和原位透射电镜&#xff0c;但氮化硅薄膜只有几百纳米的厚度&#xff0c;很容易因真空抽取初期的快速压差变化造成破裂。为此&#xff0c;本文提出了线性缓变压力控制解决方案&#xff0c;即控制…

物业小程序制作:提升管理效率与服务质量

随着物业管理的日益复杂&#xff0c;物业小程序成为了提高管理效率和提供优质服务的重要工具。物业小程序旨在提供高效的物业管理服务。通过物业小程序&#xff0c;物业公司能够方便地与业主进行信息交流、报修处理等操作。 物业小程序的好处 提高管理效率&#xff1a;物业小程…