uniapp如何保存图片到相册
在uniapp中如何将图片保存到手机相册?我尝试了uni.saveImageToPhotosAlbum方法,但总是提示保存失败,不知道是不是需要先获取权限?另外保存网络图片和本地图片的路径写法有什么区别?求一个完整的代码示例。
2 回复
使用uni.saveImageToPhotosAlbum方法,传入图片路径即可保存到相册。注意需要先获取相册权限,否则会失败。
在 UniApp 中,保存图片到相册可以通过 uni.saveImageToPhotosAlbum API 实现。以下是详细步骤和注意事项:
代码示例
// 保存网络图片或本地图片到相册
uni.saveImageToPhotosAlbum({
filePath: '图片路径(支持本地临时路径或网络URL)',
success: () => {
uni.showToast({ title: '保存成功', icon: 'success' });
},
fail: (err) => {
uni.showToast({ title: '保存失败', icon: 'none' });
console.error('保存失败:', err);
}
});
关键说明
-
权限处理(仅Android需要):
- 调用前需动态申请存储权限(API 23+),可通过
uni.authorize提前授权:
uni.authorize({ scope: 'scope.writePhotosAlbum', success: () => { /* 授权成功后执行保存 */ } }); - 调用前需动态申请存储权限(API 23+),可通过
-
路径要求:
- 网络图片需先通过
uni.downloadFile下载到本地临时路径:
uni.downloadFile({ url: 'https://example.com/image.jpg', success: (res) => { if (res.statusCode === 200) { uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath }); } } }); - 网络图片需先通过
-
用户拒绝处理:
- 若用户首次拒绝授权,可引导至设置页手动开启:
uni.openSetting({ success: (res) => { if (res.authSetting['scope.writePhotosAlbum']) { // 重新执行保存操作 } } });
注意事项
- iOS无需权限申请,但需在
manifest.json中配置相册使用描述。 - 部分安卓机型可能因系统差异需要额外处理路径或权限。
通过以上方法即可实现图片保存功能,建议在实际调用前做好路径验证和错误处理。

