WeChatアプレットは写真アップロード機能を実現

WeChatアプレットは写真アップロード機能を実現

この記事の例では、WeChatアプレットで写真をアップロードするための具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

レンダリング

WXML

<view class="img-wrap">
  <view class="txt">写真をアップロード</view>
  <view class="imglist">
    <view class="item" wx:for="{{imgs}}" wx:key="item">
      <image src="{{item}}" alt=""></image>
      <view class='delete' bindtap='deleteImg' data-index="{{index}}">
        <画像 src="../../../images/icon.png"></画像>
      </ビュー>
    </ビュー>
    <view class="last-item" wx:if="{{imgs.length >= 3 ? false : true}}" bindtap="bindUpload">
      <text class="sign">+</text>
    </ビュー>
  </ビュー>
</ビュー>

JS

データ: {
  画像: [],
  カウント: 3
},
バインドアップロード: 関数 (e) {
  スイッチ (this.data.imgs.length) {
    ケース0:
      このデータ数 = 3
      壊す
    ケース1:
      このデータ数 = 2
      壊す
    ケース2:
      このデータ数 = 1
      壊す
  }
  var that = これ
  wx.chooseImage({
    count: that.data.count, // デフォルトは 3
    sizeType: ["original", "compressed"], // オリジナル画像か圧縮画像かを指定できます。どちらもデフォルトで使用可能です。sourceType: ["album", "camera"], // ソースがアルバムかカメラかを指定できます。どちらもデフォルトで使用可能です。success: function (res) {
      // 選択した写真のローカルファイルパスのリストを返します。tempFilePath は、画像を表示するための img タグの src 属性として使用できます。var tempFilePaths = res.tempFilePaths
      (var i = 0; i < tempFilePaths.length; i++) {
        wx.uploadFile({
          URL: 'https://graph.baidu.com/upload',
          ファイルパス: tempFilePaths[i],
          名前: "ファイル",
          ヘッダー: {
            「コンテンツタイプ」: 「マルチパート/フォームデータ」
          },
          成功: 関数 (res) {
            (res.statusCode == 200)の場合{
              wx.showToast({
                タイトル: 「アップロードに成功しました」
                アイコン: "なし",
                所要時間: 1500
              })

              that.data.imgs.push(JSON.parse(res.data).data)

              that.setData({
                画像: that.data.imgs
              })
            }
          },
          失敗: 関数 (err) {
            wx.showToast({
              タイトル: 「アップロードに失敗しました」
              アイコン: "なし",
              期間: 2000
            })
          },
          完了: 関数 (結果) {
            コンソールログ(結果.errMsg)
          }
        })
      }
    }
  })
},
// 画像を削除する deleteImg: function (e) {
  var that = これ
  wx.showModal({
    タイトル: 「ヒント」、
    内容:「削除」、
    成功: 関数 (res) {
      (res.confirm)の場合{
        (var i = 0; i < that.data.imgs.length; i++) {
          i == e.currentTarget.dataset.index の場合、i, 1 でデータイメージをスプライスします。
        }
        that.setData({
          画像: that.data.imgs
        })
      } そうでない場合 (res.cancel) {
        console.log("ユーザーがキャンセルをクリック")
      }
    }
  })
}

ウィス

。包む {
  幅: 100%;
  パディング: 0 30rpx;
  ボックスのサイズ: 境界線ボックス;
}
.wrap .img-wrap {
  フォントサイズ: 30rpx;
  色: #33373E;
  下部マージン: 10rpx;
}
.wrap .img-wrap .txt {
  下部マージン: 20rpx;
}
.wrap .img-wrap .imglist {
  ディスプレイ: フレックス;
  flex-wrap: ラップ;
}
.wrap .img-wrap .imglist .item {
  幅: 150rpx;
  高さ: 150rpx;
  右マージン: 22rpx;
  下部マージン: 10rpx;
  位置: 相対的;
}
.wrap .img-wrap .imglist .last-item {
  幅: 150rpx;
  高さ: 150rpx;
  テキスト配置: 中央;
  行の高さ: 146rpx;
  境界線: 2rpx 破線 #8B97A9;
  ボックスのサイズ: 境界線ボックス;
}
.wrap .img-wrap .imglist .item 画像 {
  幅: 100%;
  高さ: 100%;
}
.wrap .img-wrap .imglist .item .delete {
  幅: 30rpx;
  高さ: 30rpx;
  位置: 絶対;
  上: -14rpx;
  右: -12rpx;
}

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

以下もご興味があるかもしれません:
  • WeChat アプレットで写真を Qiniu に一括アップロード (推奨)
  • WeChatアプレットは写真をアップロードし、指定されたサイズに比例して圧縮します。サンプルコード
  • WeChatアプレットで写真をアップロードおよびトリミングするプロセスの分析
  • WeChat アプレットで PHP サーバーに写真をアップロードする方法
  • WeChatアプレットで写真をアップロードおよび圧縮するための実装コード
  • WeChat アプレット画像アップロード機能 (バックエンド コード付き)
  • WeChatアプレットのアップロード画像の例
  • WeChatアプレットは写真アップロード機能を実現
  • WeChat アプレットがサーバーに写真をアップロードするサンプル コード

<<:  Docker /var/lib/docker/aufs/mnt ディレクトリのクリーニング方法

>>:  Linux (Centos7) に mysql8.0.18 をインストールするチュートリアル図

推薦する

MySQLの基本の共通機能

目次1. 共通機能分類1.1 単一行関数: 1.2 グループ化機能: 2. 単一行関数3. 数学関数...

mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル

目次1. MySQLのコンパイルとインストール: 2. 最初のマルチインスタンス3307を準備する3...

MySQL サブクエリ (ネストされたクエリ)、結合テーブル、複合クエリの詳細な説明

1. サブクエリMySQL 4.1以降はサブクエリをサポートしていますサブクエリ:別のクエリ内にネス...

nginx の場所に複数の Proxy_pass メソッドがある

1. まず、nginxの位置情報に関する関連知識を確認しましょう1) 位置マッチング手順: ~ #波...

ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...

Angularの親子コンポーネント通信の詳細な説明

目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...

跳ねるボールを実現するネイティブjs

思いつきで、小さなボールが跳ね返るケーススタディを書いてみました。具体的な内容は以下のとおりです。主...

JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。

目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...

IE6、IE7、IE8 で CSS3 の丸い角と影のスタイルをサポートする

CSS3 の角丸や影の効果を使ったページを作りたいのですが、IE ブラウザでは対応していません。こ...

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...

DockerはRedis5.0をビルドし、データをマウントします

目次1. 永続データの簡単なマウント2. DockerFileでイメージをビルドし、設定ファイルを指...

Windows Server 2016 に Docker をインストールする方法

最近、Microsoft は Docker をネイティブにサポートする Windows Server...

Vue.jsフレームワークはショッピングカート機能を実装します

この記事では、ショッピングカートを実装するためのVue.jsフレームワークの具体的なコードを参考まで...

Js クラスの構築と継承のケースの詳細な説明

JS のクラスの定義や継承は本当に多様なので、別のノートブックを開いて記録しておきます。意味オブジェ...

Ubuntu 18.04 Linux システムに JDK と Mysql をインストールする方法

プラットフォームの展開1. JDKをインストールするステップ1. OracleJDKをダウンロードす...