codecamp

支付宝小程序 快速示例·相册

图片存储,是所有应用开发里最常见的场景之一。在快速示例中,我们将借助小程序云开发能力,提升功能开发效率和数据隐私保护能力。

前提条件

获取模板代码

下载 serverless-photo demo.zip 文件,并解压至本地。

使用步骤

添加功能

  1. 登录 小程序开发中心,在 我的小程序 中,选择相应的小程序,进入该小程序详情页。
  2. 在小程序详情开发管理页面的 功能列表 中,点击右上角 添加功能 按钮,添加 获取会员基础信息 功能。

image

新建 / 打开项目

在 IDE 启动界面新建 云与开放能力 > 个人相册 模板项目,或者打开前面步骤下载的 zip 文件内容。

快速体验

  1. 在小程序开发者工具打开下载的工程,然后关联对应的小程序。

  1. 将 client/pages/app.js 中对应的如下小程序配置项改为用户自己的参数。
    appId: '2021*********', // 小程序应用标识
    spaceId: 'ca8eb10f-26c1-4bee-**********', // 服务空间标识
    clientSecret: 'Xckz2************', // 服务空间 secret key
    endpoint: 'https://api.************' // 服务空间地址,从小程序Serverless控制台处获得 

  1. 进入 管理云服务,点击 前往产品控制台 进入 Serverless 控制台,开通扩展能力,调用 Serverless 提供的内置方法。imageimage

  1. 保存文件后,打开 IDE 的模拟器,页面会自动刷新。至此,我们已经完成了一个简单的小程序的搭建,并将最核心的能力使用小程序 Serverless 开发完成,快使用支付宝开发者工具体验吧。

前端配置 Serverless详解

初始化

// client/app.jsimport MPServerless from '@alicloud/mpserverless-sdk';


const mpserverless = new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,}, {
  appId: ' ', // 小程序应用标识
  spaceId: ' ', // 服务空间标识
  clientSecret: ' ', // 服务空间 secret key
  endpoint: ' ' // 服务空间地址,从小程序Serverless控制台处获得});

页面加载时添加授权,否则会报错

// client/app.jsasync onSubmit() {await mpserverless.user.authorize({
      authProvider: 'alipay_openapi',
      // authType: 'anonymous'})},

全局使用 Serverless

// client/app.jsApp({
  mpserverless,});// 其他文件调用const { mpserverless } = getApp()// 添加文件数据
mpserverless.db.collection('files').insertOne( { name: '数据表名称', userId: '数据表ID' })

读取文件数据

async onReady() {
  const result = await mpserverless.db.collection('files').find({ userId: '用户id' })
  this.setData({
    files: result.result || [],
  })},

读取云数据库照片数据

 async onReady() {
    // 页面加载完成
    const { id } = this.data
    await mpserverless.db.collection('photos').find({ fileId: '文件id' }).then((res) => {
      this.setData({ imgs: res.result });
    }).catch(console.error);
  },

选择本地图片

  attach() {
    my.chooseImage({
      chooseImage: 1,
      success: res => {
        const path = res.apFilePaths[0];
        const options = {
          filePath: path,
          headers: {
            contentDisposition: 'attachment',
          },
        };


        mpserverless.file.uploadFile(options).then((image) => {
          const { imgs } = this.data
          imgs.push(image.fileUrl)
          this.setData({
            imgs,
          });
        }).catch(console.log);
      },
    });
  },

将图片保存到数据库

  async submit() {
    const obj = { urls: '图片路径', details: '图片描述', fileId: '文件id' }
    await mpserverless.db.collection('photos').insertOne(obj)
    my.navigateBack()
  },
支付宝小程序 快速示例·服务端基于函数计算搭建的 TODO List 模板
支付宝小程序 快速示例·运动步数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }