2017-07-07 126 views
0

WordPress REST API顯然不會讓我上傳帶有內容類型「image/jpeg」的文件。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爲 '圖像/ JPG', '圖像/ JPEG', '圖像', '多', '應用'或'應用程序/圖像'(我越來越絕望)我得到了一個403.

如果我將它設置爲'應用程序/ json'建議其他人,我得到一個400與'無效的JSON正文通過'。

如果我忽略的內容類型,我收到了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),並建議php.ini中的錯誤可能是,如果我不能申請能夠上傳Content-Type =''的文件。

有什麼建議嗎?

回答

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) 

注意,內容類型仍設置爲「」,但不知何故,現在有用。

相關問題