使用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(无数据提供)错误。
修复方案
修正数据读取逻辑
直接使用bytes.NewReader处理原始二进制数据,跳过字符串转换步骤:import "bytes" // 文件读取代码保持不变 data, err := ioutil.ReadFile(inFilePath) if err != nil { return err } // 替换为正确的Body赋值方式 createMediaReq.Body = ioutil.NopCloser(bytes.NewReader(data))补全必要的请求头
确保上传请求携带正确的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)))验证文件与权限
- 打印
len(data)确认读取到了完整的文件内容(若长度为0,说明文件路径错误、无读取权限或文件损坏)。 - 检查失败的PNG是否为合法格式,避免后缀名伪造或文件本身损坏的情况。
- 打印
排查WordPress端限制
- 确认目标PNG未超过WordPress后台设置的上传文件大小限制。
- 验证API请求的认证信息(如Bearer Token、Basic Auth)正确且具备媒体上传权限。
内容的提问来源于stack exchange,提问作者İkram MERT
相关产品推荐
相关产品推荐

