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

道常无为而无不为


开发环境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这个文件夹的名字就是云端向小程序端提供的方法
  • 现在在小程序端就可以参考小程序端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.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)

Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)的更多相关文章

  1. 微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载

    微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 1.不同类型文件的选取 1.1 常用的图片 视频 对于大部分开发者来说,需要上传的文件形式主要为图片,微信为此提供了接口. wx.ch ...

  2. [转]微信小程序开发(二)图片上传+服务端接收

    本文转自:http://blog.csdn.net/sk719887916/article/details/54312573 文/YXJ 地址:http://blog.csdn.net/sk71988 ...

  3. 微信小程序开发之多图片上传+服务端接收

    前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...

  4. 微信小程序_(校园视)开发上传视频业务

    微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...

  5. 微信小程序--地图上添加图片

    如何在微信小程序地图添加上,添加图片? 在微信小程序中,地图的层级最高,所以我们没有办法,通过定位,在地图上添加图片等信息; 处理办法: 添加控件:controls; 其中有个属性position,进 ...

  6. 微信小程序--图片相关问题合辑

    图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.preview ...

  7. 微信小程序初体验(上)

    版权声明:本文由练小习原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/204 来源:腾云阁 https://www.qclo ...

  8. 《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买

    作者图书京东链接,请点击------>>>    **微信小程序商城开发实战** 附京东真实评价截图: 编辑推荐 在当今移动互联网大潮中,微信应用凭借其庞大的用户基数和极强的用户黏性 ...

  9. 微信小程序--投票小程序设计与实现(图片、视频发布、分组、审核、排名)

    投票微信小程序设计与实现(图片.视频发布.分组.审核.排名) ​ 之前接到一个需求,设计一个类似H5 投票系统之类的小程序,我绞尽脑汁,冥思苦想,最后终于做了出来. 再次感谢 @文晓港 的ColorU ...

随机推荐

  1. C++:用字符串数组实现大数运算,以两个不高于40位的大数运算为例。

    因为基本数据类型中整型的内存范围有限,所以直接进行大数之间的运算,不仅浪费空间,而且运行缓慢,甚至有些会导致数据溢出. 那怎么办呢? 这时我们就想直接不行,那咱们来间接的. 这就是我们今天主要要讲的: ...

  2. linux 系统 解决php -v查看到版本于phpinfo()打印的版本不一致问题

    发现问题的原因: 安装zip扩展后,配置成功,但是使用gitlab合并的时候发生错误,经检查,使用phpinfo打印出来的php版本为7.1,而使用linux度服务器 运行 php -v的版本却是5. ...

  3. Java子类继承父类的执行顺序

    父类的静态代码块(static) 子类的静态代码块(static) 父类的非静态代码块(父类成员初始化) 父类的构造方法 子类的非静态代码块(子类成员初始化) 子类的构造方法

  4. TypeScript-axios模块进行封装的操作与一些想法

    所谓封装与模块化,对我这种初学者来说,个人理解就是解耦,比如说,当我们前端一个项目使用了现在流行的模块,但是没有对其进行封装处理,包括一些相同的代码逻辑,把他们分散在各个组件当中,这样一来整个项目对于 ...

  5. linux下oracle数据库的启动

    linux下oracle数据库的启动 一.切换oracle用户 命令:su - oracle 二.运行sqlplus命令,进入sqlplus环境 命令:sqlplus /nolog (nolog参数表 ...

  6. stash —— 一个极度实用的Git操作

    今天要介绍的 Git 操作就是 stash,毫不夸张地说,每个用 Git 的开发人员都一定要会懂怎么使用. 在介绍之前,不知道你有没有和我一样的经历:某一天,我正在一个 feature 分支上高高兴兴 ...

  7. linux查看和替换python软连接

    linux查看和替换python软连接 查看使用的python版本的路径 # which python 这里是在/usr/bin/python 然后查看链接指向, # ls -l /usr/bin/p ...

  8. 【OpenHarmony移植案例与原理】XTS子系统之应用兼容性测试用例开发

    摘要:本文主要介绍ACTS应用兼容性测试用例开发编译. 本文分享自华为云社区<移植案例与原理 - XTS子系统之应用兼容性测试用例开发>,作者: zhushy . XTS(X Test S ...

  9. [SPDK/NVMe存储技术分析]001 - SPDK/NVMe概述

    1. NVMe概述 NVMe是一个针对基于PCIe的固态硬盘的高性能的.可扩展的主机控制器接口. NVMe的显著特征是提供多个队列来处理I/O命令.单个NVMe设备支持多达64K个I/O 队列,每个I ...

  10. maltego的基本使用

    首次使用maltego需要注册 注册网站:https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php 填写好点注册就行了 1. 打开 ...