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

如何从Node.js向Cloudflare Images上传Buffer存储的PNG图片?

Node.js 上传Buffer形式PNG到Cloudflare Images

当然可以直接在Node.js中向Cloudflare Images上传图片,不需要依赖仪表盘或HTML表单,Cloudflare提供了专门的API支持程序化上传。以下是具体实现方案:

直接通过API上传的实现步骤

  1. 准备Cloudflare凭证

    • 获取你的Cloudflare账户ID(在Cloudflare仪表盘的"账户主页"查看)
    • 创建具备Images:Edit权限的API令牌(在Cloudflare仪表盘的"我的个人资料" → "API令牌"中创建)
  2. 使用Node.js Fetch API上传Buffer
    利用FormData将Buffer转换为可上传的格式,通过POST请求发送到Cloudflare Images API端点:

import fetch from 'node-fetch';
import { Blob } from 'node:buffer';

// 替换为你的实际信息
const ACCOUNT_ID = '你的Cloudflare账户ID';
const API_TOKEN = '具备Images:Edit权限的API令牌';
const imageBuffer = // 你的PNG图片Buffer对象

async function uploadToCloudflareImages() {
  const formData = new FormData();
  // 将Buffer转为Blob,指定MIME类型为image/png
  const imageBlob = new Blob([imageBuffer], { type: 'image/png' });
  // 向FormData添加文件,第三个参数为可选的文件名
  formData.append('file', imageBlob, 'uploaded-image.png');

  const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/images/v1`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`
      // 无需手动设置Content-Type,fetch会自动根据FormData生成正确的multipart/form-data头
    },
    body: formData
  });

  const result = await response.json();
  if (result.success) {
    console.log('上传成功,图片详情:', result.result);
    // 可获取图片ID、访问URL等信息
  } else {
    console.error('上传失败:', result.errors);
  }
}

uploadToCloudflareImages();

关于模拟HTML表单提交

上面的代码本质就是模拟HTML表单的文件上传流程——HTML表单上传文件时,同样是通过multipart/form-data格式发送请求,我们用FormData构造的请求和浏览器表单提交的请求结构完全一致,这就是最简便的模拟方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:43:13