WordPress REST API:无法上传内容类型的图像/ jpeg

时间:2017-07-07 01:23:17

标签: python wordpress rest api python-requests

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错误可能无法应用。

有什么建议吗?

1 个答案:

答案 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仍然设置为''',但不知何故它现在有效。