2017-07-07 3 views
0

Die WordPress REST API lässt mich anscheinend keine Datei mit dem Inhaltstyp "image/jpeg" hochladen.WordPress REST API: Content kann nicht hochgeladen werden image/jpeg

Wenn ich content-type auf eine leere Zeichenfolge setze, kann ich ein Medienelement erstellen und eine angehängte Datei hochladen (die sowohl in der Medienbibliothek als auch im Verzeichnis wp_content/uploads angezeigt wird). Dies führt jedoch zu einem ungültigen Bild, das WordPress nicht verarbeiten kann.

Dies ist der Code Ich verwende:

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) 

Als ich Content-Type zu 'image/jpg' gesetzt, 'image/jpeg', 'Bild', 'multipart', 'Anwendung' oder 'application/image' (Ich werde verzweifelt) Ich bekomme eine 403.

Wenn ich es auf 'application/json' wie von anderen vorgeschlagen einstellen, bekomme ich eine 400 mit 'ungültiger JSON Körper bestanden'.

Wenn ich Content-Type auslassen bekomme ich einen 500 mit der folgenden Meldung:

{"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}}') 

Meine Datei nicht leer ist (es ist 26kB) und die vorgeschlagenen PHP.ini Fehler können vermutlich nicht, wenn ich bin kann eine Datei mit Content-Type = '' hochladen.

Irgendwelche Vorschläge, bitte?

Antwort

0

Okay, ich habe eine Abhilfe bekam, die das Bild richtig uploads (durch einfaches Daten anstatt eine Datei hochladen):

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) 

Beachten Sie, dass Content-Type noch auf ‚‘ gesetzt ist, aber es irgendwie funktioniert jetzt.

Verwandte Themen