微信小程序實現保存影集和圖片到相冊

最近在開發一個視頻和工具類的小程序,類似於小年糕,需要實現將用戶制作的影集保存到本地手機的相冊上,頁面效果如下:

實現的邏輯如下:

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: '下載完成',
                            })
                        }
                    }
                })
            }
        }
    })
},

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: