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

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

  • ArthurSlog

  • SLog-71

  • Year·1

  • Guangzhou·China

  • Sep 12th 2018

關注微信公眾號“ArthurSlog”

道常無為而無不為

開發環境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.js

// 雲函式入口檔案
const cloud = require('wx-server-sdk')

cloud.init()

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

Server:
cloudfunctions/arthurSlog_getInfo/index.js

// 雲函式入口檔案
//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這個資料夾的名字就是雲端向小程式端提供的方法

  • 大部分函式都來源於 物件“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.js

const this_ = this
  • 使用 wx.chooseImage 方法,開啟本地檔案,選擇要上傳的檔案

  • 在success函式裡,使用setdata函式,更新 imagePath 物件的值,並使得頁面上對應的部分重新渲染

  • 現在,我們來更新頁面檔案:

Client
miniprogram/pages/index/index.wxml

<!--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”

如果你喜歡我的文章 歡迎點贊 留言

謝謝

相關推薦

Slog71_選取顯示本地圖片GET 程式開發-時代3

ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 道常無為而無不為 開發環境MacOS(High Sierra 10.13.5) 需要的資訊和資訊源: 前言 ”雲開發

程式人臉識別(新增資訊照片)

首先,我們要有開發者工具,今天所說的是後端和前端聯合起來實現的。在PHP的控制器中寫一個upload方法,程式碼如下: public function upload($id=''){ if(empty($id)){ return false;

程式動態新增刪除指定內容(view)獲取input值

這次遇到個問題: 1. 動態的新增指定的view內容。。嗯。。很簡單。。wx:for就搞定 2. 動態新增的內容中有input,最終獲取值的時候,要獲取到所有input的值並且是一個數組。。嗯。。 3. 動態刪除指定的已經新增的view內容。。 思路: 1. wx:for 迴圈view,新

程式圖片與下載

大家都知道,小程式有著大量的api,檔案(圖片)的上傳也是其中之一. 給大家分享一下個人的用法.我所做的是一個類似空間日誌的圖文釋出以及混排. 首先是圖片的選擇,使用wx.chooseImage,將選中

程式購物車父子元件值及calc的注意事項

在做微信小程式時,覺得小組裡對購物車的實現不是很完美,就自己嘗試的寫了下,然後用到了父子元件傳值,父子元件傳值的話,和vue框架上是非常相似的,以及calc這個css函式,calc有個注意點,自己不怎麼用,一時間有差點忘了,這裡記錄下 1.效果圖 2.子元件實現

程式canvas 文字斷行省略號顯示

文字的多行處理在dom元素中很好辦。但是canvas中沒有提供方法,只有通過擷取指定字串來達到目的。 那麼下面就介紹我自己處理的辦法: wxml: <canvas canvas-id='word' id='test'></canvas> canvas肯定要一個畫板容器啦

程式頁面跳轉

年前最後一天上班了,公司幾個人在上班,沒事做,還是來學習一下小程式吧。 本部落格說一下頁面跳轉,頁面跳轉又分為三種:跳轉新頁面,當前頁面跳轉及tab跳轉。 先來看看navigator相關屬性: 直接程式碼說話: 主頁面: <!--index

圖片的URL至阿里OSS操作程式二維碼返回的二進位制到OSS

當我們從網路中獲取一個URL的圖片我們要儲存到本地或者是私有的雲時,我們可以這樣操作  把url中的圖片檔案下載到本地(或者上傳到私有云中)  public String uploadUrlToOss(String url) { try{ U

程式----圖片

  微信小程式上傳圖片用到的api wx.chooseImage(OBJECT)wx.previewImage(OBJECT)wx.uploadFile(OBJECT) 這幾個基本的api的使用方法可

基於Taro + Dva構建的適配不同端程式H5React-Native 等的時裝衣櫥

前言 Taro 是一套遵循 React 語法規範的 多端開發 解決方案。現如今市面上端的形態多種多樣,Web、React-Native、微信小程式等各種端大行其道,當業務要求同時在不同的端都要求有所表現的時候,針對不同的端去編寫多套程式碼的成本顯然非常高,這時候只編寫一套程式碼就能夠適配到多端的能力就顯得極

程式-day03-註冊頁面路由程式頁面跳轉模組化

1.路由 wx.navigateTo    開啟新頁面 wx.redirectTo      頁面重定向 wx.switchTab      切換 Tab

程式父子間元件

1.建立元件 開啟微信開發者工具,建立元件,會生成四個檔案:wxml,wxss,js,json 在wxml中: <view>我是元件A</view> 在js中: Component({ behaviors: [], properti

程式本地快取

目前,微信給每個小程式提供了10M的本地快取空間(哎喲媽呀好大) 有了本地快取,你的小程式可以做到: 離線應用(已測試在無網路的情況下,可以操作快取資料) 流暢的使用者體驗 減少網路請求,節省伺服器資源 哪些資料適合方快取:

程式 元素設定高度顯示方法

最近搞小程式用到了 map 元件,想控制他全屏顯示,但是發現用到height: 100% 的時候根本不起作用,想要生效必須要把 view 標籤,從最外層,一層一層設定成高度 100% 才可以, 後來查閱資料發現: 可以通過vh這個單位,整個螢幕預設滿屏為100vh;所以將地圖的高度設定為

程式店鋪評分元件及vue中用svg實現的評分顯示元件

在微信小程式中,有遇到要展示店鋪評分,或者是訂單完成後對商品進行評價,用到了星星展示,查了下,在微信中無法使用svg實現圖片,微信中只能將svg圖片轉成base64來顯示,所以是在vue中使用的svg來實現評分 1.效果圖 微信中的可以點選及顯示,但是,顯示的話,在4.2分,

程式控制硬體②】 開始程式旅,匯入程式Mqtt客戶端原始碼,實現簡單的驗證通訊於伺服器附帶原始碼

本博文由熱愛分享熱愛技術的半顆心臟原創,非官方人員、非組織名義編寫,博文如有不對或侵犯您的權益,請及時留言,第一時間糾正! 一、前言; 繼續我們的小程式控制智慧硬體(包括esp8266)學

程式容器元件view實現水平縱向佈局

專案中最常用的兩種佈局方式,水平佈局和垂直佈局,在微信小程式中實現起來也比較簡單。 1.橫向水平佈局: 實現水平佈局,需要四個view容器元件,其中一個是父容器。如下: <!--index.wxml--> <view class="content"&g

程式-返回一頁

先介紹三種跳轉方式:1.B頁面自帶返回按鈕wx.navigateTo(OBJECT) 保留當前頁面,跳轉到應用內的某個頁面,使用wx.navigateBack可以返回到原頁面2.B頁面不帶返回按鈕wx.redirectTo(OBJECT) 關閉當前頁面,跳轉到應用內的某個頁

程式臨時開啟開發環境不校驗請求域名TLS版本及HTTPS證書 選項

使用 wx.request、wx.connectSocket、wx.uploadFile、wx.downloadFile 等方法時,都會涉及到 URL,微信小程式是不允許隨便訪問 URL 的,需要在小程式的“設定”->“開發設定”中,把域名配置進去。 但

程式pxrempxvwvh

rpx 是微信小程式解決自適應螢幕尺寸的尺寸單位。微信小程式規定螢幕的寬度為750rpx。 無論是在iPhone6上面還是其他機型上面都是750rpx的螢幕寬度,拿iPhone6來講,螢幕寬度為375px,把它分為750rpx後, 1rpx = 0.5px。 微信小程式同時也支援rem