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

Node.js调用WordPress API上传WebP图片失败(406错误)求助

WordPress API 上传WebP图片返回406 Not Acceptable错误的解决方法

问题定位

PNG格式可通过API正常上传,WebP格式返回406错误,但后台UI上传WebP无异常,说明WordPress本身支持WebP格式,问题出在API请求的构建逻辑上。

具体解决方案

1. 补充文件名后缀

代码中filename仅设置为"someName",缺少.webp后缀。WordPress可能通过文件名后缀辅助识别文件类型,即使设置了Content-Type,缺失后缀仍可能触发验证失败。

修改代码:

const filename = "someName.webp"

2. 完善请求头信息

部分服务器对请求头格式要求严格,建议添加Content-Length头,明确请求体大小,同时确保Content-Disposition格式规范:

"headers": {
  'Content-Disposition': `attachment; filename="${filename}"`,
  'Authorization':       `Basic ${token}`,
  'Content-Type':        'image/webp',
  'Content-Length':      imageBuffer.length.toString()
},

3. 改用FormData格式上传

WordPress后台UI上传文件默认使用multipart/form-data格式,直接传递Buffer可能不符合API预期。尝试用FormData包装文件:

const formData = new FormData();
formData.append('file', imageBuffer, {
  filename: 'someName.webp',
  type: 'image/webp'
});

const response = await fetch(apiMediaUrl, {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${token}`
    // 无需手动设置Content-Type,FormData会自动生成正确的multipart/form-data头
  },
  body: formData,
});

4. 排查服务器配置

  • 检查wp-config.php是否存在限制WebP上传的配置
  • 确认是否有插件拦截WebP格式的API请求
  • 查看服务器mod_security规则是否屏蔽了WebP的API上传请求

辅助调试

若修改后仍报错,可打印响应的具体内容,获取服务器返回的详细错误信息:

const responseText = await response.text();
console.log("响应详情:", responseText);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:02:08