前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TCB系列学习文章——云开发的云存储篇(六)

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

原创
作者头像
F颜
修改2020-06-30 17:15:48
1.6K0
修改2020-06-30 17:15:48
举报

1、云开发介绍

1、概述

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

2、CDN和fileID

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

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

3、小程序额外支持

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

2、上传文件到云储存

1、小程序端

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

2、web端

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、服务器端

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、获取临时文件链接

[这里是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端)

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

5、删除云储存文件

[这里是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. 不用专门去维护一个文件管理的数据库了!省事!

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、云开发介绍
    • 1、概述
      • 2、CDN和fileID
        • 3、小程序额外支持
        • 2、上传文件到云储存
          • 1、小程序端
            • 2、web端
              • 3、服务器端
              • 3、获取临时文件链接
              • 4、下载云储存文件(暂不支持web端)
              • 5、删除云储存文件
              • 6、文件管理
                • 小程序云开发控制台
                  • 权限设置
                  • 总结
                  相关产品与服务
                  云开发 CloudBase
                  云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档