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

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.xdnf.cn/news/16565.html

相关文章:

  • Ubuntu Linux 如何配置虚拟内存 —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录8
  • USB设备调试
  • 全面理解JVM虚拟机
  • RK3568 Linux驱动学习——U-Boot使用
  • 六、搭建springCloudAlibaba2021.1版本分布式微服务-admin监控中心
  • Linux 基础命令大全
  • 内存泄漏问题排查
  • Context Engineering Notes
  • 【Golang】Go语言运算符
  • 迷宫生成与路径搜索(A算法可视化)
  • Triton IR
  • Libevent(4)之使用教程(3)配置
  • 如何使用ozone调试elf文件?
  • Dify 本地化部署深度解析与实战指南
  • LangChain实现RAG
  • 力扣 hot100 Day57
  • 第四科学范式(数据密集型科学):科学发现的新范式
  • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
  • IIS发布.NET9 API 常见报错汇总
  • Java面试实战:从基础到架构的全方位技术交锋
  • add新增管理员功能、BaseController类的简介--------示例OJ
  • PDF转图片实用指南:如何批量高效转换?
  • AI入门学习-模型评估示例讲解
  • Deja Vu: 利用上下文稀疏性提升大语言模型推理效率
  • 【java】 IntelliJ IDEA高效编程设置指南
  • Day06–哈希表–242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 嵌入式学习日志————对射式红外传感器计次