WordPress REST API显然不允许我上传内容类型为“image / jpeg”的文件。
如果我将content-type设置为空字符串,我就可以创建媒体项并上传附加文件(它出现在媒体库和wp_content / uploads目录中)。但是,这样做会导致WordPress无法处理的图像无效。
这是我正在使用的代码:
def post():
url = 'https://www.example.com/wp-json/wp/v2/media'
data = open('C:\\Pictures\\foo.jpg', 'rb').read()
r = requests.post(url=url,
files={'filename1': data},
data={'title': 'Files test'},
headers={'Content-Type': '', 'Content-Disposition': 'attachment; filename={}'.format('foo.jpg')},
auth=('username', 'password'))
return (r.status_code, r.text)
当我将Content-Type设置为'image / jpg','image / jpeg','image','multipart','application'或'application / image'(我变得绝望)时,我得到了403 。
如果我按照别人的建议将它设置为'application / json',我会得到一个带有'无效JSON正文的400'。
如果我省略Content-Type I,则会收到500以下消息:
{"code":"rest_upload_unknown_error","message":"File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.","data": {"status":500}}')
我的文件不是空的(它是26kB),如果我能够上传Content-Type =''的文件,建议的PHP.ini错误可能无法应用。
有什么建议吗?
答案 0 :(得分:0)
好的,我有一个可以正确上传图片的解决方法(只需上传数据而不是文件):
def post():
url = 'https://www.example.com/wp-json/wp/v2/media'
data = open('C:\\Pictures\\foo.jpg', 'rb').read()
r = requests.post(url=url,
data=data,
headers={'Content-Type': '', 'Content-Disposition': 'attachment; filename={}'.format('foo.jpg')},
auth=('username', 'password'))
return (r.status_code, r.text)
请注意,Content-Type仍然设置为''',但不知何故它现在有效。