アルバムと写真をアルバムに保存するためのWeChatアプレット

アルバムと写真をアルバムに保存するためのWeChatアプレット

私は現在、Xiao Nian Gao に似たビデオおよびツール アプリを開発しています。ユーザーが作成したアルバムをローカルの電話アルバムに保存する必要があります。ページ効果は次のとおりです。

実装されたロジックは次のとおりです。

1. ユーザーの承認を取得します。承認された場合は、直接ダウンロードします。

2. ユーザーが以前に認証したことがない場合は、ユーザー認証インターフェイスを呼び出して、ユーザーに認証を求めます。ユーザーが同意すると、ソフトウェアがダウンロードされます。ユーザーが同意しない場合は、プロンプトが表示されます。

3. 以前に認証が要求されたがユーザーが拒否した場合は、設定インターフェースを開き、ユーザーに認証を有効にするように指示します。

以下はコード実装です。どなたでもコピー、貼り付け、コメントしていただけます。

まず WXML コード:

<view class="アルバム操作"> 
    <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>
</ビュー>

以下はJSコードです

// ダウンロードを許可する downloadAlbum: function(e) {
    var that = this;
    // アルバムのステータス var status = e.target.dataset.status;
    // ダウンロード リンク アドレス var link = e.target.dataset.link;
 
    (ステータス == 2)の場合{
        wx.showToast({
            タイトル: 「アルバムは現在制作中です。しばらくお待ちください」
            アイコン: 'なし'
        });
    } それ以外 {
        // ユーザー認証を取得する wx.getSetting({
            成功(res) {
                // 承認された場合 if (res.authSetting['scope.writePhotosAlbum']) {
                    that.saveAlbum(リンク);
                // 承認されていない場合 } else if (res.authSetting['scope.writePhotosAlbum'] === undefined) {
                    //ユーザー認証を呼び出す wx.authorize({
                        スコープ: 'scope.writePhotosAlbum',
                        成功() {
                            that.saveAlbum(リンク);
                        },
                        失敗() {
                            wx.showToast({
                                タイトル: 「権限がないため、アルバムに保存できません」
                                アイコン: 'なし'
                            })
                        }
                    })
                // 以前に認証が拒否された場合 } else {
                    wx.openSetting({
                        成功(res) {
                            res.authSetting['scope.writePhotosAlbum']の場合{
                                that.saveAlbum(リンク);
                            } それ以外 {
                                wx.showToast({
                                    タイトル: 「権限がないため、アルバムに保存できません」
                                    アイコン: 'なし'
                                })
                            }
                        }
                    })
                }
            }
        })
    }
},
 
// アルバムを保存する saveAlbum: function (link) {
    wx.downloadFile({
        url: リンク、
        成功(res) {
            (res.statusCode === 200の場合){
                var パス = res.tempFilePath
                wx.saveVideoToPhotosAlbum({
                    filePath: パス、
                    成功(res) {
                        res.errMsg == 'saveVideoToPhotosAlbum:ok' の場合 {
                            wx.showToast({
                                タイトル: 「ダウンロードが完了しました」
                            })
                        }
                    }
                })
            }
        }
    })
},

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットは写真の撮影とアルバムからの写真の選択を実現します
  • WeChatアプレットが写真をアルバムに保存する許可設定
  • WeChatアプレットは写真を撮ったり、アルバムから写真を選択してアップロードするコード例
  • WeChatアプレットは写真をアルバムに保存する機能を実装しました
  • WeChat アプレット chooseImage の使い方 (ローカル アルバムから画像を選択するか、カメラを使用して写真を撮る)
  • WeChatアプレットの開発:アルバムから写真を取得し、カメラを使用して写真を撮り、ローカルの写真をアップロードします

<<:  mysql8.0.19 でパスワードを忘れた場合の完璧な解決策

>>:  Dockerはmacvlanをベースにホスト間コンテナ通信を実装する

推薦する

Centos7 への MySQL8 のインストールチュートリアル

MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...

WeChatミニプログラムマップの使い方を詳しく解説

この記事の例では、WeChatアプレットマップで使用される具体的な実装コードを参考までに共有していま...

外部ネットワークアクセスを許可するためのMysql5.6の設定手順の詳細を共有する

最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...

Mysql論理アーキテクチャの詳細な説明

1. 全体的なアーキテクチャ図他のデータベースと比較すると、MySQL は、そのアーキテクチャがさま...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

CentOS 6.8 での Hadoop 3.1.1 完全分散インストール ガイド (推奨)

上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...

Dockerのインストール方法とDockerの4つのネットワークモードの詳細説明

1. Dockerをインストールするyum -y install docker-ioインストールが完...

HTML CSS の 3 つの一般的なスタイル セレクター

1: タグセレクタータグセレクターはすべてのタグに使用されます。ここでは p を例に挙げます。つまり...

Alibaba Cloud MySQL スペースをクリーンアップする方法

今日、Alibaba Cloudからディスク警告通知を受け取りました。確認したところ、100Gのスペ...

JS での new の手書き実装

目次1 新しいオペレータの紹介2 新しいものは何をしましたか? 3 新しい演算子の実装をシミュレート...

Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

MySQLプリコンパイル機能の詳細な説明

この記事では、MySQLのプリコンパイル機能について紹介します。具体的な内容は以下のとおりです。 1...

MySQL デッドロック ルーチン: 一意のインデックスの下でのバッチ挿入順序の不一致

序文デッドロックの本質はリソースの競合です。バッチ挿入の順序が一貫していないと、デッドロックに陥りや...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...