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;
相关推荐
电话交换机IPPBX-3CX12 小时前
IPPBX 3CX V20 Update7 上架阿里云市场镜像
阿里云·云计算·ippbx·电话交换机
观测云12 小时前
阿里云 RDS MySQL 可观测性最佳实践
mysql·阿里云·云计算
算家计算12 小时前
云计算大佬揭秘AI如何改变程序员未来,这些技能将成关键
人工智能·程序员·云计算
王道长服务器 | 亚马逊云16 小时前
AWS Elemental MediaConvert:视频转码不再难
linux·服务器·网络·云计算·音视频·aws
AI炼金师18 小时前
Claude Code - AWS Skills
云计算·ai编程·aws·极限编程·vibecoding
TG_yunshuguoji21 小时前
阿里云渠道商:如何建立阿里云的权限模型?
运维·服务器·阿里云·云计算
在云上(oncloudai)1 天前
AWS Data Exchange:概述、功能与安全性
人工智能·云计算·aws
两个人的幸福online1 天前
php使用腾讯云服务
开发语言·php·腾讯云
mit6.8242 天前
[云计算] Classic Network-->VPC: 用SDN和Overlay实现隔离
云计算
@HNUSTer2 天前
基于 GEE 使用 OTSU 算法赋能遥感水体自动化提取:从自动阈值计算到高效分割的水体自动分割方案
云计算·数据集·遥感大数据·gee·云平台·水体提取·影像分割