小程序保存网络图片

小程序保存网络实现流程:

1.把图片下载到本地

2.检查用户的授权状态(三种状态:未授权,已授权,未同意授权),判断是否授权保存图片的能力,如果是用户点击了不同意授权给小程序保存图片的能力,需要打开微信的设置页面,让用户点击打开授权,如果未授权或者已授权,就直接调用保存图片的接口就好了

实现代码:

wx.downloadFile({
						url: this.img,
						success: function(res) {
							console.log(res);
							uni.getSetting({
							  success (ress) {
							    console.log(ress.authSetting)
								// return
								if(ress.authSetting["scope.writePhotosAlbum"] === false){
									wx.openSetting({
									  success (res) {}
									})
								}else{
									wx.saveImageToPhotosAlbum({
										filePath: res.tempFilePath,
										success: function(data) {
											console.log('aaaaaaaaaaaaaa',data)
											uni.showToast({
												title: "保存成功",
												icon: "success",
												duration: 2000
											});
										},
										fail: function(err) {
											console.log(err);
										},
										complete(res) {
											console.log(res);
										}
									});
								}
							  }
							})
						}
					});

### 微信小程序保存图片报错解决方案 在微信小程序中,保存图片到本地相册可能会遇到一些问题,尤其是安卓机型上的特定错误。以下是针对该问题的详细分析与解决方案。 #### 1. 问题原因 部分安卓机型在调用 `wx.downloadFile` 方法下载网络资源图片后,生成的临时文件路径可能带有未知扩展名(如 `.unknown`)。这会导致后续调用 `wx.saveImageToPhotosAlbum` 方法时出现错误:`saveImageToPhotosAlbum:fail invalid file type`[^1]。 此外,在某些情况下,开发者工具和手机调试模式下可以成功保存图片,但关闭调试后无法保存。这可能是由于未正确配置 `downloadFile` 的合法域名所致[^3]。 #### 2. 解决方案 以下是几种有效的解决方法: ##### 方法一:指定正确的文件扩展名 通过手动指定文件扩展名,确保生成的临时文件路径符合要求。例如,使用以下代码将图片保存为 `.jpg` 格式: ```javascript const filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.jpg`; wx.downloadFile({ url: 'https://example.com/image.jpg', // 图片链接 filePath: filePath, // 指定文件路径及扩展名 success(res) { if (res.statusCode === 200) { wx.saveImageToPhotosAlbum({ filePath: res.filePath, success() { wx.showToast({ title: '图片保存成功' }); }, fail(err) { console.error('保存失败:', err); } }); } }, fail(err) { console.error('下载失败:', err); } }); ``` 此方法通过明确指定文件扩展名为 `.jpg`,避免了因扩展名不正确导致的保存失败问题[^4]。 ##### 方法二:检查并配置合法域名 如果图片保存功能在调试模式下正常工作,但在非调试模式下失效,请检查是否已将图片下载路径的域名添加到微信小程序后台的合法域名列表中。具体步骤如下: 1. 登录微信小程序管理后台。 2. 进入“开发 > 开发设置”页面。 3. 在“downloadFile 合法域名”中添加图片路径的域名。 完成配置后,重新上传代码并测试,确保图片保存功能正常运行[^3]。 ##### 方法三:处理不同平台差异 由于安卓和 iOS 平台可能存在差异,建议在保存图片前判断当前设备类型,并采取相应的处理措施: ```javascript let res = wx.getSystemInfoSync(); if (res.platform === 'android') { // 针对安卓设备的特殊处理 const filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.jpg`; wx.downloadFile({ url: 'https://example.com/image.jpg', filePath: filePath, success(res) { if (res.statusCode === 200) { wx.saveImageToPhotosAlbum({ filePath: res.filePath, success() { wx.showToast({ title: '图片保存成功' }); }, fail(err) { console.error('保存失败:', err); } }); } } }); } else if (res.platform === 'ios') { // 针对 iOS 设备的默认处理 wx.downloadFile({ url: 'https://example.com/image.jpg', success(res) { if (res.statusCode === 200) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success() { wx.showToast({ title: '图片保存成功' }); }, fail(err) { console.error('保存失败:', err); } }); } } }); } ``` 通过区分平台差异,可以有效减少因系统特性不同而导致的错误[^2]。 #### 3. 其他注意事项 - 确保图片 URL 是可访问的,并且支持跨域请求。 - 如果图片较大,建议在保存前提示用户可能需要较长时间完成操作。 - 在生产环境中,务必捕获所有可能的异常,并提供友好的错误提示信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a_靖

对你有帮助吗?打赏鼓励一下?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值