前面章節(jié)分享了云函數(shù)、數(shù)據(jù)庫(kù),基本上可以完成一個(gè)簡(jiǎn)單應(yīng)用開發(fā)了。但是一款應(yīng)用應(yīng)該還會(huì)有圖片、視頻之類的,那么這些數(shù)據(jù)存放在哪呢?那就是云存儲(chǔ)。云存儲(chǔ)每個(gè)云廠商的叫法不一樣,有的叫 OSS、有的叫 COS。
我們打開騰訊云云開發(fā)控制臺(tái),如下圖是云開發(fā)的云存儲(chǔ)界面。
云存儲(chǔ)的作用或者說(shuō)能力有:
下面的環(huán)節(jié),都是在云函數(shù)的基礎(chǔ)上操作的,假如對(duì)云函數(shù)不了解,可以閱讀編寫第一個(gè)云函數(shù)。
我們可以使用 云開發(fā) Node.js SDK,在云函數(shù)中進(jìn)行圖片的上傳。
'use strict';
const tcb = require("tcb-admin-node")
const fs = require("fs")
const app = tcb.init({
env: '你的環(huán)境 ID'
})
exports.main = async (event, context) => {
// uploadFile 上傳文件
let data = await app.uploadFile({
cloudPath: "/test-00001.jpg",
// fileContent: buffer 或要上傳的文件可讀流
// 后續(xù)會(huì)將更簡(jiǎn)單的方法,在前端直接通過 JS-SDK 上傳
fileContent: fs.createReadStream('./test.png')
})
return {
status: 1,
file_id: res.fileID
}
}
有了文件上傳,就有文件的下載動(dòng)作。
'use strict';
const tcb = require("tcb-admin-node")
const fs = require("fs")
const app = tcb.init({
env: '你的環(huán)境 ID'
})
exports.main = async (event, context) => {
// downloadFile 下載圖片
let res = await app.downloadFile({
fileID: '云存儲(chǔ)中文件的 fileID',
})
// fileContent 類型為 Buffer
return res.fileContent
}
一般情況,手動(dòng)上傳的文件,都可以復(fù)制到 CDN 的訪問鏈接。但是如果是代碼大批量上傳的,我們可以寫程序獲取,例如獲取用戶的頭像。
const tcb = require('tcb-admin-node')
const app = tcb.init({
env: '你的環(huán)境 ID'
})
exports.main = async (event, context) => {
// getTempFileURL 獲取 CDN 訪問地址
let res = await app.getTempFileURL({
// fileID 數(shù)組
fileList: ['fileID-1', 'fileID-2']
})
res.fileList.forEach(item => {
// 打印文件訪問鏈接
console.log(item.tempFileURL)
})
}
刪除文件也比較簡(jiǎn)單。
const tcb = require('tcb-admin-node')
const app = tcb.init({
env: '你的環(huán)境 ID'
})
exports.main = async (event, context) => {
// deleteFile 刪除文件
let res = await app.deleteFile({
fileList: [
'cloud://a/b/c',
'cloud://d/e/f'
]
})
return res.fileList
}
更多建議: