uniapp下载和上传照片

news/2025/2/13 2:29:04/

利用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.ppmy.cn/news/859124.html

相关文章

Web前端技术 Web学习资料 Web学习路线 Web入门宝典(不断更新中)

(此文档于2019年3月停止再更新,后续更新移步至:https://github.com/liuyuqin1991/polaris) 学习路线 第一章 技术(核心单独列章节) 1.Node Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时…

3、Redis底层原理(持久化+分布式锁)

Redis底层原理 持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当…

Gateway网关组件(在Spring Cloud整合Gateway(idea19版本))

Spring Cloud Gateway官网:Spring Cloud Gateway 局域网中就有网关这个概念,局域网接收数据或发送数据都要通过网关,比如使用VMware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的⼀个IP作为网关地址,网关可以对请求进行控制,提升…

“小小小头像”小程序,微信头像框生成工具

因为迎近国庆,腾讯新闻出了款微信用户头像框在线生成的h5网页,当天朋友圈被这条消息刷屏了 然后我晚上就花2个多小时时间开发了一款微信小程序“小小小头像”,这款小程序可以获取用户头像选择自己喜欢的头像框进行绘制。也可以选择本地上传自…

The Frog Prince (青蛙王子) and Hello Kitty (凯蒂猫)

The Frog Prince (青蛙王子) and Hello Kitty (凯蒂猫) 1. Hello Kitty (凯蒂猫 / 堤提猫 / 吉蒂猫) .gif Hello Kitty (凯蒂猫/堤提猫/吉蒂猫) 是日本的三丽鸥公司于 1974 年所创作的卡通形象。日本三丽鸥 (Sanrio) 指 Hello Kitty 并不是一只猫,而是一个小女孩的…

英语练习wink

计算机 computer;笔记本 laptop;系统 system;键盘 keyboard;鼠标 mouse; 版本 version;路径 path;打印 print;安装 install;卸载 uninstall; 8种基础数据类…

English Learning - L2 语音作业打卡 辅音唇齿音 [f] [v] Day28 2023.3.20 周一

English Learning - L2 语音作业打卡 辅音唇齿音 [f] [v] Day28 2023.3.20 周一 💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 [k]…

小学听力测试英语软件,小学英语听力测试

目录 一、小学英语听力音频 2007—2008学年度第一学期 小学六年级英语第一单元考核题(听力材料) 一. 1. --Is the park far from here?--- No its notfar. I can go there by bike. 2.--- Are you helpful at 。 在英语教学中,我们经常强调的是对学生听、说、读、写…