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、文件管理
- 登录 云开发控制台,单击环境名称,单击【文件管理】。
- 进入文件管理页面,您可以查看云存储空间中所有的文件。
- 单击文件对应的【详情】操作,即可查看关于此文件的所有信息,如文件名称、文件大小、存储位置等。
小程序云开发控制台
- 启动微信开发者工具,打开小程序项目,选择【云开发】>【存储】
- 单击文件名或【详情】,即可查看关于此文件的所有信息,如文件名称、文件大小、存储位置等。
权限设置
如需设置文件权限,选择【权限设置】,根据实际需求,勾选存储桶权限并保存。
- 腾讯云云开发控制台权限设置:
- 小程序云开发控制台权限设置:
总结
- 支持CDN加速,这个就厉害了,非云服务不可。这意味着客户的下载速度可以相对稳定得多。
- 文件权限管理可视化和方便性,这个真的也很方便啊,以前用Linux系统做文件权限的时候,各种报错和疑惑,各种指令。
- 前端直接上传文件,不得不说,和云数据库有异曲同工之妙,两个字,方便。
- 小程序的image、video、cover-image元素都支持直接通过fileID去访问文件了,方便突破天际。
- 不用专门去维护一个文件管理的数据库了!省事!
云储存说实话,我暂时还没找到什么太大的槽点,推荐,就酱。