您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax |

微信小程序实现保存影集和图片到相册

51自学网 2022-05-02 21:33:45
  javascript

最近在开发一个视频和工具类的小程序,类似于小年糕,需要实现将用户制作的影集保存到本地手机的相册上,页面效果如下:

实现的逻辑如下:

1. 获取用户授权, 如果之前已授权直接下载。

2. 如果用户之前没有授权,则调起用户授权界面,让用户授权,用户同意则下载,不同意则提示。

3. 如果之前调起授权了,但是用户拒绝了,打开设置界面,引导用户开启授权。

以下是代码实现,欢迎大家复制粘贴和吐槽。

首先是WXML代码:

<view class="album-operate">     <view class="edit" bindtap="deleteAlbum"  data-id="{{item.id}}" data-status="{{item.status}}">        删除    </view>     <button class="save" data-link="{{item.link}}" data-status="{{item.status}}" bindtap='downloadAlbum'>        保存/下载    </button>     <view class="share" bindtap="desabledShare" wx:if="{{item.status==2}}">分享</view>    <button class="share" open-type="share" data-id="{{item.id}}" data-cover="{{item.cover_url}}" data-name="{{item.name}}" wx:if="{{item.status!=2}}">        分享    </button></view>

以下是JS代码

// 授权下载downloadAlbum: function(e) {    var that = this;    // 影集状态    var status = e.target.dataset.status;    // 下载链接的地址    var link = e.target.dataset.link;     if (status == 2) {        wx.showToast({            title: '影集正在制作中,请等待',            icon: 'none'        });    } else {        // 获取用户授权        wx.getSetting({            success(res) {                // 如果已授权                if (res.authSetting['scope.writePhotosAlbum']) {                    that.saveAlbum(link);                // 如果没有授权                 } else if (res.authSetting['scope.writePhotosAlbum'] === undefined) {                    // 调起用户授权                    wx.authorize({                        scope: 'scope.writePhotosAlbum',                        success() {                            that.saveAlbum(link);                        },                        fail() {                            wx.showToast({                                title: '您没有授权,无法保存到相册',                                icon: 'none'                            })                        }                    })                // 如果之前授权已拒绝                } else {                    wx.openSetting({                        success(res) {                            if (res.authSetting['scope.writePhotosAlbum']) {                                that.saveAlbum(link);                            } else {                                wx.showToast({                                    title: '您没有授权,无法保存到相册',                                    icon: 'none'                                })                            }                        }                    })                }            }        })    }}, // 保存影集saveAlbum: function (link) {    wx.downloadFile({        url: link,        success(res) {            if (res.statusCode === 200) {                var path = res.tempFilePath                wx.saveVideoToPhotosAlbum({                    filePath: path,                    success(res) {                        if (res.errMsg == 'saveVideoToPhotosAlbum:ok') {                            wx.showToast({                                title: '下载完成',                            })                        }                    }                })            }        }    })},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持wanshiok.com。


jquery实现全屏滚动效果
React Native JSI实现RN与原生通信的示例代码
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1