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

使用WordPress API上传PNG遇rest_upload_no_data错误求助

解决WordPress API上传PNG报错rest_upload_no_data的问题

核心问题定位

你代码里的二进制数据转字符串操作是导致部分PNG上传失败的关键:

createMediaReq.Body = ioutil.NopCloser(strings.NewReader(string(data)))

PNG属于二进制文件,包含大量非UTF-8编码的字节,强制将[]byte转为string会破坏原始数据结构,导致WordPress无法识别有效文件内容,最终返回rest_upload_no_data(无数据提供)错误。

修复方案

  1. 修正数据读取逻辑
    直接使用bytes.NewReader处理原始二进制数据,跳过字符串转换步骤:

    import "bytes"
    
    // 文件读取代码保持不变
    data, err := ioutil.ReadFile(inFilePath)
    if err != nil {
        return err
    }
    // 替换为正确的Body赋值方式
    createMediaReq.Body = ioutil.NopCloser(bytes.NewReader(data))
    
  2. 补全必要的请求头
    确保上传请求携带正确的HTTP头,让WordPress能正确解析文件:

    import "path/filepath"
    import "fmt"
    
    createMediaReq.Header.Set("Content-Type", "image/png")
    createMediaReq.Header.Set("Content-Disposition", fmt.Sprintf("form-data; name=\"file\"; filename=\"%s\"", filepath.Base(inFilePath)))
    
  3. 验证文件与权限

    • 打印len(data)确认读取到了完整的文件内容(若长度为0,说明文件路径错误、无读取权限或文件损坏)。
    • 检查失败的PNG是否为合法格式,避免后缀名伪造或文件本身损坏的情况。
  4. 排查WordPress端限制

    • 确认目标PNG未超过WordPress后台设置的上传文件大小限制。
    • 验证API请求的认证信息(如Bearer Token、Basic Auth)正确且具备媒体上传权限。

内容的提问来源于stack exchange,提问作者İkram MERT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:18:23