当前位置: 首页 > news >正文

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;

http://www.dtcms.com/a/301013.html

相关文章:

  • MySQL 用户管理
  • 第六章 JavaScript 互操(3)JS调用.NET
  • Django5.1(131)—— 表单 API二(API参考)
  • 电科金仓 KingbaseES 深度解码:技术突破・行业实践・沙龙邀约 -- 融合数据库的变革之力
  • Java面试宝典:MySQL索引
  • 2-4、Dify案例实践—基于工作流构建商城用户评价智能分析系统
  • PyTorch武侠演义 第一卷:初入江湖 第7章:矿洞中的计算禁制
  • 基于mnn架构在本地 c++运行llm与mllm模型
  • 数据结构基本内容(第四篇:队列)
  • 2025.7.27
  • Java面试题及详细答案120道之(061-080)
  • C++算法竞赛篇(六)一维数组题型讲解
  • 【工具】python汇总发票(含源码)
  • Java排序算法之<希尔排序>
  • 7月27日星期日今日早报简报微语报早读
  • GitHub 趋势日报 (2025年07月25日)
  • Linux 系统网络配置及 IP 地址相关知识汇总
  • STM32 I2C通信完整教程:从协议原理到硬件实现
  • 一文快速了解Docker和命令详解
  • 模拟实现python的sklearn库中的Bunch类以及 load_iris 功能
  • 文件权限标记机制在知识安全共享中的应用实践
  • minio 对象存储
  • java的break能加标签,return可以加标签吗
  • 从一副蓝牙耳机里get倍思的“实用而美”
  • Python 程序设计讲义(23):循环结构——循环控制语句 break 与 continue
  • 背包DP之多重背包
  • 边缘提取算法结合深度学习的肺结节分割预测
  • 「日拱一码」040 机器学习-不同模型可解释方法
  • 【机器学习】第七章 特征工程
  • 【机器学习-3】 | 决策树与鸢尾花分类实践篇