TCB系列学习文章——云开发的云存储篇(六)

2020-06-30 17:15:48 浏览数 (1)

1、云开发介绍

1、概述

云开发为开发者提供了存储空间、将文件上传到云端存储空间内以及带权限的云端文件下载能力,开发者可以使用云开发控制台或使用 SDK 调用接口来使用存储功能。

2、CDN和fileID

云开发默认支持 CDN 加速,并提供免费 CDN 域名。

每一个上传到云开发的文件都有一个全网唯一的 fileID,使用 fileID 可以更加安全便捷的访问文件,例如私有权限的文件的访问链接的有效期是有限的,开发者可以选择使用 fileID 动态的换取可以访问的文件链接地址。

3、小程序额外支持

部分小程序的组件(如image、video、cover-image等),支持传入云文件的 fileID,具体支持的情况,请访问微信官方文档 - 小程序的组件支持文档。

2、上传文件到云储存

1、小程序端

代码语言:javascript复制
wx.cloud.uploadFile({
  cloudPath: 'test/ceshi.png', // 上传至云端的路径
  filePath: '', // 小程序临时文件路径,一般通过wx.chooseImage获取
}).then((res) => {
  console.log(res.fileID)// 返回文件 ID
});

2、web端

代码语言:javascript复制
const tcb = require("tcb-js-sdk")//引入sdk——web
tcb.init({env: 'hj-id'})//初始化

app.uploadFile({
  cloudPath: 'test/ceshi.png', // 上传至云端的路径
  filePath: document.getElementById('file').files[0]//上传的文件
}).then((res) => {
  console.log(res.fileID)// 返回文件 ID
});

3、服务器端

代码语言:javascript复制
const cloud= require('wx-server-sdk')//引入sdk——服务器端(有三种,看情况引入)
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV// API 调用都保持和云函数当前所在环境一致
});

cloud.uploadFile({
  cloudPath: 'test/ceshi.png', // 上传至云端的路径
  fileContent: fs.createReadStream('a/test.jpg')//文件流
}).then((res) => {
  console.log(res.fileID)// 返回文件 ID
});

3、获取临时文件链接

代码语言:javascript复制
[这里是tcb对象(wx.cloud或tcb或cloud)].getTempFileURL({
    fileList: [//要下载的文件 ID 组成的数组
        'cloud://a/b/c',
        'cloud://d/e/f'
    ]
}).then((res) => {
    // fileList 是一个有如下结构的对象数组
    // [{
    //    fileID: 'cloud://webte328c3-1251059088/腾讯云.png', // 文件 ID
    //    tempFileURL: '', // 临时文件网络链接
    //    maxAge: 120 * 60 * 1000, // 有效期
    // }]
    console.log(res.fileList)
});

4、下载云储存文件(暂不支持web端)

代码语言:javascript复制
[这里是tcb对象(wx.cloud或cloud)].downloadFile({
  fileID: "cloud://a/b/c", // 文件 ID
}).then((res) => {
    console.log(res.tempFilePath) // 小程序返回临时文件路径(已经下载到临时文件)
    console.log(res.fileContent) // 云函数返回Buffer文件流类型
});

5、删除云储存文件

代码语言:javascript复制
[这里是tcb对象(wx.cloud或tcb或cloud)].deleteFile({
  fileList: [//要删除的文件 ID 组成的数组
    'cloud://a/b/c',
    'cloud://d/e/f'
  ]
}).then((res) => {
    console.log(res.fileList)
});

6、文件管理

  1. 登录 云开发控制台,单击环境名称,单击【文件管理】。
  2. 进入文件管理页面,您可以查看云存储空间中所有的文件。
  1. 单击文件对应的【详情】操作,即可查看关于此文件的所有信息,如文件名称、文件大小、存储位置等。

小程序云开发控制台

  1. 启动微信开发者工具,打开小程序项目,选择【云开发】>【存储】
  1. 单击文件名或【详情】,即可查看关于此文件的所有信息,如文件名称、文件大小、存储位置等。

权限设置

如需设置文件权限,选择【权限设置】,根据实际需求,勾选存储桶权限并保存。

  • 腾讯云云开发控制台权限设置:
  • 小程序云开发控制台权限设置:

总结

  1. 支持CDN加速,这个就厉害了,非云服务不可。这意味着客户的下载速度可以相对稳定得多。
  2. 文件权限管理可视化和方便性,这个真的也很方便啊,以前用Linux系统做文件权限的时候,各种报错和疑惑,各种指令。
  3. 前端直接上传文件,不得不说,和云数据库有异曲同工之妙,两个字,方便。
  4. 小程序的image、video、cover-image元素都支持直接通过fileID去访问文件了,方便突破天际。
  5. 不用专门去维护一个文件管理的数据库了!省事!

云储存说实话,我暂时还没找到什么太大的槽点,推荐,就酱。

0 人点赞