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;
相关推荐
同聘云5 小时前
阿里云国际站服务器gpu服务器与cpu服务器的区别,gpu服务器如何使用?
服务器·前端·阿里云·云计算
tianyuanwo5 小时前
DPU驱动的云服务器革命:性能飙升与成本重构的商业技术双赢
服务器·云计算·dpu
阿里云云原生6 小时前
阿里云可观测 2025 年 11 月产品动态
阿里云·云原生·云计算·可观测
布茹 ei ai6 小时前
7、基于GEE 平台的 VIIRS 夜间灯光监测工具
云计算·js·遥感·gee
云老大TG:@yunlaoda36010 小时前
腾讯云国际站代理商TCCC的技术适配服务包括哪些内容?
数据库·云计算·腾讯云
PyAIGCMaster11 小时前
小程序使用阿里云oss的记录。
阿里云·云计算
云老大TG:@yunlaoda36011 小时前
跨境电商行业适合使用腾讯云国际站代理商的MapReduce吗?
云计算·腾讯云·mapreduce
阿乔外贸日记12 小时前
爱尔兰公司后续维护
大数据·人工智能·智能手机·云计算·汽车
wanhengidc12 小时前
云手机 实体手机的云端延伸
运维·服务器·科技·智能手机·云计算
翼龙云_cloud12 小时前
阿里云渠道商:如何三步提升阿里云轻量服务器单机性能?
运维·服务器·阿里云·云计算