| | |
| | | |
| | | // #ifdef APP-PLUS || MP-WEIXIN |
| | | // 在App和微信环境中使用uni.downloadFile |
| | | return await this.downloadInApp(file_path, points); |
| | | return await this.downloadInApp(file_path, points, file_type); |
| | | // #endif |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | static async downloadInApp(file_path, points) { |
| | | static async downloadInApp(file_path, points, file_type) { |
| | | try { |
| | | // 下载文件到临时路径 |
| | | const downloadResult = await uni.downloadFile({ |
| | | url: file_path |
| | | // 下载到临时文件 |
| | | const downloadResult = await new Promise((resolve, reject) => { |
| | | uni.downloadFile({ |
| | | url: file_path, |
| | | success: (res) => { |
| | | if (res.statusCode === 200) { |
| | | resolve(res) |
| | | } else { |
| | | reject(new Error(`下载失败,状态码: ${res.statusCode}`)) |
| | | } |
| | | }, |
| | | fail: (err) => reject(err) |
| | | }) |
| | | }) |
| | | |
| | | if (downloadResult.statusCode !== 200) { |
| | | throw new Error('下载文件失败') |
| | | } |
| | | |
| | | const { tempFilePath } = downloadResult; |
| | | const { |
| | | tempFilePath |
| | | } = downloadResult |
| | | |
| | | // 检查相册权限 |
| | | const hasPermission = await this.checkPhotoAlbumPermission() |
| | |
| | | uni.showToast({ |
| | | title: '下载成功', |
| | | icon: 'success' |
| | | }) |
| | | }); |
| | | |
| | | // 清理临时文件 |
| | | this.cleanTempFile(tempFilePath) |
| | | |
| | | } catch (error) { |
| | | await uni.hideLoading(); |
| | |
| | | // #ifdef MP-WEIXIN |
| | | uni.getSetting({ |
| | | success: (res) => { |
| | | if (res.authSetting['scope.writePhotosAlbum']) { |
| | | resolve(true) |
| | | if (res.authSetting['scope.writePhotosAlbum'] === false) { |
| | | // 用户之前拒绝过授权 |
| | | uni.showModal({ |
| | | title: '需要相册权限', |
| | | content: '需要您授权相册权限才能保存图片', |
| | | success: (modalRes) => { |
| | | if (modalRes.confirm) { |
| | | uni.openSetting({ |
| | | success: (settingRes) => { |
| | | resolve(!!settingRes |
| | | .authSetting[ |
| | | 'scope.writePhotosAlbum' |
| | | ]) |
| | | }, |
| | | fail: () => resolve(false) |
| | | }) |
| | | } else { |
| | | resolve(false) |
| | | } |
| | | } |
| | | }) |
| | | } else if (res.authSetting['scope.writePhotosAlbum'] === undefined) { |
| | | // 首次尝试授权 |
| | | // 首次申请权限 |
| | | uni.authorize({ |
| | | scope: 'scope.writePhotosAlbum', |
| | | success: () => resolve(true), |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | this.showAuthGuide() |
| | | resolve(false) |
| | | // 已有权限 |
| | | resolve(true) |
| | | } |
| | | } |
| | | }, |
| | | fail: () => resolve(false) |
| | | }) |
| | | // #endif |
| | | |
| | | // #ifdef APP-PLUS || H5 |
| | | // #ifdef APP-PLUS |
| | | // App端默认有权限或使用原生权限申请 |
| | | resolve(true) |
| | | // #endif |
| | | |
| | | // #ifdef H5 |
| | | // H5端不需要相册权限 |
| | | resolve(true) |
| | | // #endif |
| | | }) |
| | |
| | | ); |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 清理临时文件 |
| | | */ |
| | | static cleanTempFile(tempFilePath) { |
| | | uni.getFileSystemManager().unlink({ |
| | | filePath: tempFilePath, |
| | | fail: (err) => { |
| | | console.warn('清理临时文件失败:', err) |
| | | } |
| | | }) |
| | | } |
| | | } |