Slog71_選取、上傳和顯示本地圖片GET !(微信小程式之雲開發-全棧時代3)
-
ArthurSlog
-
SLog-71
-
Year·1
-
Guangzhou·China
-
Sep 12th 2018
道常無為而無不為
開發環境MacOS(High Sierra 10.13.5)
需要的資訊和資訊源:
前言
- ”雲開發“ 封裝好了一些常用的業務邏輯,提供了以下方面的相關API供開發者使用:
-
雲函式
-
資料庫
-
儲存管理
開始編碼
-
現在先把微信開發工具更新至最新(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
如果你喜歡我的文章 歡迎點贊 留言
謝謝
相關推薦
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構建的適配不同端(微信小程式、H5、React-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 的,需要在小程式的“設定”->“開發設定”中,把域名配置進去。 但
微信小程式之px、rem、px、vw、vh
rpx 是微信小程式解決自適應螢幕尺寸的尺寸單位。微信小程式規定螢幕的寬度為750rpx。 無論是在iPhone6上面還是其他機型上面都是750rpx的螢幕寬度,拿iPhone6來講,螢幕寬度為375px,把它分為750rpx後, 1rpx = 0.5px。 微信小程式同時也支援rem