Slog71_選取、上傳和顯示本地圖片GET !(微信小程序之雲開發-全棧時代3)

ArthurSlog

  • ArthurSlog
  • SLog-71
  • Year·1
  • Guangzhou·China
  • Sep 12th 2018

道常無爲而無不爲html


開發環境MacOS(High Sierra 10.13.5)

須要的信息和信息源:

前言

  • 」雲開發「 封裝好了一些經常使用的業務邏輯,提供瞭如下方面的相關API供開發者使用:
  1. 雲函數
  2. 數據庫
  3. 存儲管理

開始編碼

  • 如今先把微信開發工具更新至最新(1.02.1809101),有部分開發人員在微信社區反饋更新以後沒有看到「雲開發」的按鈕
  • 解決辦法:點擊檢查更新,等待更新徹底完成以後重啓開發工具
  • 重點:雲開發方式須要appid,請準備好
  • 當前雲開發模版的微信小程序文件結構以下:
cloudfunctions
    | - login
          | - index.js
          | - package.json
          | - package-lock.json
          
    | - arthurSlog_getInfo
          | - index.js
          | - package.json
          | - package-lock.json

    | - arthurSlog_methodAdd
          | - index.js
          | - package.json
          | - package-lock.json
          
miniprogram
    | - images
           | - code-db-inc-dec.png
           | - code-db-onAdd.png
           | - code-db-onQuery.png
           | - code-db-onRemove.png
           | - code-func-sum.png
           | - console-entrance.png
           | - create-collection.png
    | - pages
           | - addFunction
                    | - addFunction.js
                    | - addFunction.json
                    | - addFunction.wxml
                    | - addFunction.wxss
           | - chooseLib
                    | - chooseLib.js
                    | - chooseLib.json
                    | - chooseLib.wxml
                    | - chooseLib.wsxx
           | - databaseGuide
                    | - databaseGuide.js
                    | - databaseGuide.json
                    | - databaseGuide.wxml
                    | - databaseGuide.wxss
           | - deployFunctions
                    | - deployFunctions.js
                    | - deployFunctions.json
                    | - deployFunctions.wxml
                    | - deployFunctions.wxss
           | - index
                    | - index.js
                    | - index.wxml
                    | - index.wxss
                    | - user-unlogin.png
           | - storageConsole
                    | - storageConsole.js
                    | - storageConsole.json
                    | - storageConsole.wxml
                    | - storageConsole.wxss
           | - userConsole
                    | - userConsole.js
                    | - userConsole.json
                    | - userConsole.wxml
                    | - userConsole.wxss
    | - style
           | - guide.wxss
    | - app.js
    | - app.json
    | - app.wxss

README.md
project.config.json
  • 在使用「雲開發」的時候,須要先調用 初始化函數 init
  • 小程序端的初始化函數是 wx.cloud.init()
  • 雲端的初始化函數是 const cloud = require('wx-server-sdk') cloud.init())

Client:
miniprogram/app.js前端

//app.js
App({
  onLaunch: function () {
    
    if (!wx.cloud) {
      console.error('請使用 2.2.3 或以上的基礎庫以使用雲能力')
    } else {
      wx.cloud.init({
        env: 'arthurslog-test-d4537a',
        traceUser: true,
      })
    }

    this.globalData = {}
  }
})

Server:
cloudfunctions/arthurSlog_getInfo/index.jsgit

// 雲函數入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 雲函數入口函數
exports.main = async(event, context) => {
  return event.userInfo
}
  • 上面的Server端代碼中

Server:
cloudfunctions/arthurSlog_getInfo/index.jsgithub

// 雲函數入口文件
//const cloud = require('wx-server-sdk')

//cloud.init()

// 雲函數入口函數
exports.main = async(event, context) => {
  return event.userInfo
}
  • 沒有調用到 「wx-server-sdk」 的方法,因此能夠註釋掉,不影響結果
  • 這裏提醒一下,就是 cloudfunctions 路徑下的文件的名稱,就是雲端向小程序端提供的方法
  • 舉個栗子:對於cloudfunctions/arthurSlog_getInfo來講,arthurSlog_getInfo這個文件夾的名字就是雲端向小程序端提供的方法
  • 如今在小程序端就能夠參考小程序端API文檔(客戶端)
  • 大部分函數都來源於 對象「wx」,這個 「wx」對象 就相似於服務端的 「wx-server-sdk」對象
  • 好比,在小程序端(客戶端)有 wx.cloud.callFunction()、wx.cloud.uploadFile()等方法
  • 再好比,在雲端(服務端)有 cloud.init()、cloud.database()、cloud.collection()等方法
  • 如今,咱們來接觸一下 「小程序·雲開發」 的 「存儲管理功能」
  • 打開小程序端的 miniprogram/pages/index/index.js

Client
miniprogram/pages/index/index.js數據庫

Page({
  data: {
    avatarUrl: './user-unlogin.png',
    userInfo: {},
    logged: false,
    takeSession: false,
    requestResult: '',
    fileID: '',
    cloudPath: '',
    imagePath: './user-unlogin.png',
  },

  // ...
  // ...
  // ...

  // 添加前端代碼,向雲端上傳圖片
  arthurSlog_uploadImg: function() {
    // 選擇圖片
    const this_ = this
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        // tempFilePath能夠做爲img標籤的src屬性顯示圖片
        const tempFilePaths = res.tempFilePaths

        this_.setData({
          imagePath: tempFilePaths[0],
        })

        console.log(tempFilePaths[0])
      }
    })
  },
})
  • 在這裏,咱們定義了一個方法arthurSlog_uploadImg,參考 小程序官方文檔
  • 首先將當前環境對象 映射 給對象 this_

Client
miniprogram/pages/index/index.jsnpm

const this_ = this
  • 使用 wx.chooseImage 方法,打開本地文件,選擇要上傳的文件
  • 在success函數裏,使用setdata函數,更新 imagePath 對象的值,並使得頁面上對應的部分從新渲染
  • 如今,咱們來更新頁面文件:

Client
miniprogram/pages/index/index.wxmljson

<!--index.wxml-->
<view class="container">

  <!-- ... -->

  <!-- 獲取 openid -->
  <view class="uploader">
    <button class="userinfo-nickname" bindtap="arthurSlog_getInfo">點擊獲取 openid</button>
  </view>

  <!-- 返回兩個對象之和 -->
  <view class="uploader">
    <button class="userinfo-nickname" bindtap="arthurSlog_methodAdd">點擊返回兩個對象之和</button>
  </view>

  <!-- 上傳圖片 -->
  <view class="uploader">
    <button class="userinfo-nickname" bindtap="arthurSLog_uploadImg">上傳圖片</button>
  </view>
  <!-- 顯示圖片 -->
  <view>
    <image class="img" src="{{imagePath}}" mode="scaleToFill"></image>
  </view>

</view>
  • 此次使用的方法,不須要本身編寫雲端服務代碼,騰訊公司已經提供了
  • 保存文件,在模擬器中點擊上傳圖片(我放了一張演示圖片在此路徑下:miniprogram/images/ArthurSlog.png)
  • 選中要上傳的文件,點擊「打開」
  • 正常執行之下,會顯示出咱們剛剛上傳的圖片,到這裏暫停一下,如今圖片還沒發送出去
  • 在下一篇中,再繼續補充
  • 至此,咱們實現了一個選取本地文件,並顯示選中的圖片文件。

歡迎關注個人微信公衆號 ArthurSlog

關注微信公衆號「ArthurSlog」

若是你喜歡個人文章 歡迎點贊 留言

謝謝

相關文章
相關標籤/搜索