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;
相关推荐
腾讯蓝鲸智云20 小时前
【运维自动化-标准运维】变量的高级用法
云计算·saas·自动化运维
AOwhisky21 小时前
7. if 条件语句的知识与实践
linux·运维·云计算·运维开发·shell·选择结构
AWS官方合作商1 天前
零性能妥协:Gearbox Entertainment 通过 AWS 和 Perforce 实现远程开发革命
大数据·云计算·aws
桃源学社(接毕设)1 天前
云计算下数据隐私保护系统的设计与实现(LW+源码+讲解+部署)
java·云计算·毕业设计·swing·隐私保护
Hello123网站1 天前
Qwen2-阿里云最新发布的通义千问开源大模型
阿里云·开源·云计算·ai工具
AOwhisky2 天前
Linux 文本处理三剑客:awk、grep、sed 完全指南
linux·运维·服务器·网络·云计算·运维开发
XSKY星辰天合2 天前
破解分层之困:XSKY AI 数据湖以智慧流动支撑 5Tbps 训练业务
云计算
diablobaal2 天前
云计算学习100天-第26天
学习·云计算
Britz_Kevin2 天前
从零开始的云计算生活——第四十六天,铁杵成针,kubernetes模块之Configmap资源与Secret资源对象
kubernetes·云计算·生活
Akamai中国2 天前
AI需要防火墙,云计算需要重新构想
人工智能·云计算·云服务