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

调用Etsy API上传图片提示非有效文件,如何获取正确二进制格式?

问题根因

你现有代码的问题出在buffer.toString("binary")这一步操作:该方法会把图片的原始二进制Buffer转换为ISO-8859-1编码的字符串,直接破坏了图片的二进制结构,所以Etsy接口无法识别为有效图片文件。

正确实现方式

核心原则是不要对原始二进制Buffer做任何字符串转换,根据你的图片来源对应调整逻辑即可:

从网络地址获取图片

async function getImageBinary(url) {
    const imageRes = await fetch(url);
    // 浏览器环境直接返回原始ArrayBuffer即可
    return await imageRes.arrayBuffer();
    // Node.js环境可以转成Buffer格式返回:return Buffer.from(await imageRes.arrayBuffer());
}

读取本地图片文件

import fs from 'fs/promises';

async function getLocalImageBinary(filePath) {
    // 直接返回读取到的原始Buffer即可
    return await fs.readFile(filePath);
}

上传请求注意事项

  • 构造请求时必须使用multipart/form-data格式传递图片数据
  • 图片对应的表单字段要正确设置文件名和MIME类型(比如image/jpeg、image/png),和实际图片格式保持一致
  • 不要对二进制数据做Base64编码、字符串转码等额外处理,直接传入原始Buffer/ArrayBuffer即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:27:03