前面章节分享了云函数、数据库,基本上可以完成一个简单应用开发了。但是一款应用应该还会有图片、视频之类的,那么这些数据存放在哪呢?那就是云存储。云存储每个云厂商的叫法不一样,有的叫 OSS、有的叫 COS。
我们打开腾讯云云开发控制台,如下图是云开发的云存储界面。
云存储的作用或者说能力有:
下面的环节,都是在云函数的基础上操作的,假如对云函数不了解,可以阅读 第 05 篇:编写第一个云函数。
我们可以使用 云开发 Node.js SDK,在云函数中进行图片的上传。
"use strict";
const tcb = require("tcb-admin-node");
const fs = require("fs");
const app = tcb.init({
env: "你的环境 ID",
});
exports.main = async (event, context) => {
// uploadFile 上传文件
let data = await app.uploadFile({
cloudPath: "/test-00001.jpg",
// fileContent: buffer 或要上传的文件可读流
// 后续会将更简单的方法,在前端直接通过 JS-SDK 上传
fileContent: fs.createReadStream("./test.png"),
});
return {
status: 1,
file_id: res.fileID,
};
};
有了文件上传,就有文件的下载动作。
"use strict";
const tcb = require("tcb-admin-node");
const fs = require("fs");
const app = tcb.init({
env: "你的环境 ID",
});
exports.main = async (event, context) => {
// downloadFile 下载图片
let res = await app.downloadFile({
fileID: "云存储中文件的 fileID",
});
// fileContent 类型为 Buffer
return res.fileContent;
};
一般情况,手动上传的文件,都可以复制到 CDN 的访问链接。但是如果是代码大批量上传的,我们可以写程序获取,例如获取用户的头像。
const tcb = require("tcb-admin-node");
const app = tcb.init({
env: "你的环境 ID",
});
exports.main = async (event, context) => {
// getTempFileURL 获取 CDN 访问地址
let res = await app.getTempFileURL({
// fileID 数组
fileList: ["fileID-1", "fileID-2"],
});
res.fileList.forEach((item) => {
// 打印文件访问链接
console.log(item.tempFileURL);
});
};
删除文件也比较简单。
const tcb = require("tcb-admin-node");
const app = tcb.init({
env: "你的环境 ID",
});
exports.main = async (event, context) => {
// deleteFile 删除文件
let res = await app.deleteFile({
fileList: ["cloud://a/b/c", "cloud://d/e/f"],
});
return res.fileList;
};
本文出自 王利华