NodeJs接入腾讯云存储COS
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;