You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Chokidar?求实现视频自动上传至Cloudinary的正确代码

Chokidar + Cloudinary 自动视频上传实现代码示例

1. 先安装依赖

npm install chokidar cloudinary fs-extra

2. 完整实现代码

const chokidar = require('chokidar');
const cloudinary = require('cloudinary').v2;
const fs = require('fs-extra');

// 配置Cloudinary(替换成你自己的凭证)
cloudinary.config({
  cloud_name: 'YOUR_CLOUD_NAME',
  api_key: 'YOUR_API_KEY',
  api_secret: 'YOUR_API_SECRET'
});

// 要监听的本地目录(替换成你的视频目录)
const WATCH_DIR = './local-videos';
// 已上传文件记录,避免重复上传
const uploadedFiles = new Set();

// 初始化监听
const watcher = chokidar.watch(WATCH_DIR, {
  ignored: /^\./, // 忽略隐藏文件
  persistent: true,
  awaitWriteFinish: {
    stabilityThreshold: 2000, // 等待文件写入完成(避免上传未写完的文件)
    pollInterval: 100
  }
});

// 处理文件添加事件
watcher.on('add', async (filePath) => {
  // 只处理视频文件(可根据需要扩展格式)
  const videoExtensions = ['.mp4', '.mov', '.avi', '.flv', '.wmv'];
  const ext = filePath.toLowerCase().slice(filePath.lastIndexOf('.'));
  if (!videoExtensions.includes(ext)) return;

  // 避免重复上传
  if (uploadedFiles.has(filePath)) return;
  uploadedFiles.add(filePath);

  try {
    console.log(`开始上传: ${filePath}`);
    // 上传到Cloudinary
    const result = await cloudinary.uploader.upload(filePath, {
      resource_type: 'video', // 指定资源类型为视频
      folder: 'auto-uploaded-videos', // 可选:指定Cloudinary中的文件夹
      use_filename: true, // 使用原文件名
      unique_filename: false, // 不自动添加唯一后缀(如果需要重复文件名覆盖可设为true)
      overwrite: false // 不覆盖已存在文件
    });

    console.log(`上传成功: ${result.secure_url}`);
    // 可选:上传后删除本地文件
    // await fs.remove(filePath);
  } catch (error) {
    console.error(`上传失败 ${filePath}:`, error.message);
    // 移除记录,方便重试
    uploadedFiles.delete(filePath);
  }
});

// 监听错误
watcher.on('error', (error) => {
  console.error('监听错误:', error);
});

console.log(`开始监听目录: ${WATCH_DIR}`);

关键注意事项

  • 确保Cloudinary凭证正确,权限足够上传视频资源
  • awaitWriteFinish 参数很重要,避免上传还在写入的不完整视频文件
  • 可以根据需求调整视频格式白名单、上传后的本地文件处理逻辑
  • 如果需要支持大文件上传,可添加 chunk_size 参数到Cloudinary上传配置中

内容的提问来源于stack exchange,提问作者Naruto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:32:32