如何解决Python调用WordPress REST API上传图片至媒体库失败问题
WordPress REST API 图片上传问题修复
核心问题分析
你的代码存在两个关键错误:
- 直接通过
data参数传递二进制文件内容,没有采用WordPress要求的multipart/form-data上传格式,API无法识别这是新文件上传请求,因此返回了已存在的媒体数据。 - 手动设置
Content-Disposition和Content-Type头,与实际请求格式不匹配,干扰了API的解析逻辑。
修复后的代码
import requests # 使用with语句安全打开文件,避免资源泄漏 with open("photo.jpg", 'rb') as photo_file: # 通过files参数构建标准的multipart/form-data请求 files = { 'file': ('photo.jpg', photo_file, 'image/jpeg') } response = requests.post( url='https://DOMAIN-NAME.com/wp-json/wp/v2/media', auth=('admin', 'APpL IcaT iONp assW ordW Padm'), files=files ) # 打印状态码和响应内容,便于排查问题 print(response.status_code) print(response.json())
关键注意事项
- 权限验证:确保你的应用密码正确,且关联的用户账户拥有
upload_files权限(管理员默认拥有该权限)。 - 请求格式:无需手动设置上传相关的请求头,
requests会通过files参数自动生成符合规范的multipart/form-data头信息。 - 服务器配置:若修复后仍失败,检查服务器的PHP配置(
upload_max_filesize、post_max_size)是否足够容纳图片大小,或安全插件是否拦截了REST API请求。
内容的提问来源于stack exchange,提问作者Quanti Monati
相关产品推荐
相关产品推荐

