NodeJS接入
要在 Node.js 中接入腾讯云 COS(Cloud Object Storage),可以使用腾讯云 COS 的 Node.js SDK。以下是基本的接入步骤:
安装 COS SDK:首先,在您的 Node.js 项目中安装腾讯云 COS SDK。您可以使用 npm 或 yarn 进行安装:
npm install cos-nodejs-sdk-v5
配置 COS 实例:在您的代码中,导入 COS SDK 并配置 COS 实例。您需要提供腾讯云的 SecretId、SecretKey、Bucket 名称等信息。以下是一个简单的示例:
const COS = require('cos-nodejs-sdk-v5');
const cos = new COS({
SecretId: 'yourSecretId',
SecretKey: 'yourSecretKey',
});
使用 COS 服务
const COS = require('cos-nodejs-sdk-v5');
const cos = new COS({
SecretId: 'yourSecretId',
SecretKey: 'yourSecretKey',
});
function getFileType(mimetype) {
if (!mimetype) return 'unknown';
if (mimetype.startsWith('image/')) return 'image';
if (mimetype.startsWith('video/')) return 'video';
if (mimetype.startsWith('audio/')) return 'audio';
return 'file';
}
exports.uploadToCOS = (file, filename) => {
return new Promise((resolve, reject) => {
// 通过转码得到文件的中文名称
const originalFilename = Buffer.from(filename, 'latin1').toString('utf8');
const key = `uploads/${Date.now()}_${originalFilename}`;
const type = getFileType(file.mimetype);
cos.putObject(
{
Bucket: '桶名称',
Region: '地址',
Key: key,
Body: file.buffer,
ContentType: file.mimetype,
ContentDisposition: 'inline',
},
(err, data) => {
if (err) return reject(err);
const url = `https://${data.Location}`;
resolve({
url,
key,
type,
filename: originalFilename, // 这里仍然可以返回原始中文名供前端展示
});
}
);
});
};
接口路由:
var express = require('express');
var router = express.Router();
const multer = require('multer');
const upload = multer({ storage: multer.memoryStorage() }); // 用内存存文件
const { uploadToCOS } = require('../utils/cos');
router.post('/api/upload', upload.single('file'), async (req, res) => {
try {
const file = req.file;
if (!file) return res.error('文件不能为空', 400);
const fileData = await uploadToCOS(file, file.originalname);
res.success(fileData, '上传成功');
} catch (err) {
console.error(err);
res.error('上传失败', 400);
}
});
module.exports = router;