当前位置: 首页 > news >正文

uniapp实现远程图片下载到手机相册功能

在 UniApp 中实现点击下载图片到相册的功能,需要以下几个步骤:

1. 下载图片到本地(uni.downloadFile

2. 将图片保存到相册(uni.saveImageToPhotosAlbum

完整代码示例:

<template><view @click="downloadAndSaveImage">点击下载并保存图片</view>
</template><script>
export default {data() {return {imageUrl: 'https://example.com/your-image.jpg' // 替换为你的图片地址}},methods: {async downloadAndSaveImage() {try {// 1. 下载图片const { tempFilePath } = await new Promise((resolve, reject) => {uni.downloadFile({url: this.imageUrl,success: (res) => {if (res.statusCode === 200) {resolve(res);} else {reject(new Error('下载失败'));}},fail: (err) => {reject(err);}});});// 2. 获取相册权限await new Promise((resolve, reject) => {uni.getSetting({success: (res) => {if (!res.authSetting['scope.writePhotosAlbum']) {uni.authorize({scope: 'scope.writePhotosAlbum',success: resolve,fail: () => {uni.showToast({ title: '请开启相册权限', icon: 'none' });reject(new Error('未授权写入相册'));}});} else {resolve();}}});});// 3. 保存图片到相册await new Promise((resolve, reject) => {uni.saveImageToPhotosAlbum({filePath: tempFilePath,success: resolve,fail: (err) => {reject(err);}});});uni.showToast({ title: '保存成功' });} catch (err) {uni.showToast({ title: '保存失败', icon: 'none' });console.error(err);}}}
}
</script>

注意事项:

  • 跨域问题:确保图片 URL 支持跨域访问。
  • 合法域名:在小程序端使用时,图片 URL 必须配置在小程序后台的 下载域名白名单 中。
  • 权限申请:首次保存需用户主动触发授权(如点击按钮),不能自动静默执行。
  • 临时路径uni.downloadFile 返回的是临时路径,保存后可删除或复用。

可选增强功能:

  • 使用 uni.getImageInfo 预加载图片信息;
  • 添加 loading 状态提示;
  • 在 H5 端可用 <a download> 实现替代方案。

如果你有具体使用的平台(如微信小程序、H5、App)或其他需求,我们可以一起交流学习。

相关文章:

  • 学校安全教育网站建设爱链网买链接
  • 北京网站优化诊断推广途径有哪些
  • 创建公司主页班级优化大师的功能
  • 门户网站模板源码天津优化网络公司的建议
  • 挂号网站制作百度推广技巧方法
  • 17.zwd一起做网站池尾站打开百度网站首页
  • DD3118S:USB3.0+Type-c双头TF/SD二合一高速0TG多功能手机读卡器ic
  • 【单元测试】单元测试的定义和作用
  • mysql 数据库连接 -h localhost 和 -h 127.0.0.1 区别是什么
  • 【AI时代速通QT】第三节:Linux环境中安装QT并做测试调试
  • C++修炼:异常
  • stm32万年历仿真+keil5程序
  • DeepSeek 和 GPT 系列模型针对越狱攻击的安全评估
  • Lombok注解 - 提高Java开发效率
  • phpstudy apache伪静态.htaccess文件置空丢失问题解决
  • WPF CommunityToolkit.Mvvm
  • JavaEE初阶第四期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(二)
  • Unity_导航操作(鼠标控制人物移动)_运动动画
  • (C++)标准模板库(STL)相关介绍(C++教程)
  • 【轨物洞见】光伏清洁机器人本地组网探析——面向沙漠/海上电站的可靠通信架构设计
  • SAP-ABAP:MODIFY语句灵活更新数据库表详解
  • 使用 Bank Churn 数据集进行二元分类
  • 字节跳动开源了一款 Deep Research 项目
  • react生命周期及hooks等效实现
  • Windows 创建并激活 Python 虚拟环境venv
  • 华为云Flexus+DeepSeek征文 | 基于CCE容器的AI Agent高可用部署架构与弹性扩容实践