Hast du mal einen anderen API Call versucht, z.B. https://developer.wordpress.or…ference/users/#list-users
Kommt da auch ein 403?
Hast du mal einen anderen API Call versucht, z.B. https://developer.wordpress.or…ference/users/#list-users
Kommt da auch ein 403?
Zum Media Upload
https://wordpress.stackexchange.com/questions/325776/add-media-with-wp-rest-api-v2-ii
Schick mal noch den content-Type mit image/jpeg
Hast du mal einen anderen API Call versucht, z.B. https://developer.wordpress.or…ference/users/#list-users
Kommt da auch ein 403?
Gerade getestet und ja kommt auch 403
Zum Media Upload
https://wordpress.stackexchang…ia-with-wp-rest-api-v2-ii
Schick mal noch den content-Type mit image/jpeg
Leider auch nein...
ich hab das gefühl das villt am Webserver noch was eingestellt werden muss
Gerade getestet und ja kommt auch 403
Als GET?
Bitte mal eine Ausgabe des Requests inkl. Header und der Response inkl. Header
Was steht im Webserverlig?
Als GET?
Bitte mal eine Ausgabe des Requests inkl. Header und der Response inkl. Header
Was steht im Webserverlig?
Serverlog:
2024-05-12 19:55:32 ErroIP-Adresse 403 GET /wp-json/wp/v2/users HTTP/1.1 118 SSL/TLS-Zugriff für nginx
Get-Auszug:
send: b'GET /wp-json/wp/v2/users HTTP/1.1\r\nHost: www.retro-lan-projekt.de\r\nUser-Agent: python-requests/2.28.2\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n'
reply: 'HTTP/1.1 403 Forbidden\r\n'
header: Server: nginx
header: Date: Sun, 12 May 2024 17:57:59 GMT
header: Content-Type: text/html
header: Transfer-Encoding: chunked
header: Connection: keep-alive
header: Vary: Accept-Encoding
header: Content-Encoding: gzip
Fehler beim Abrufen der Benutzerdaten. Statuscode: 403
Keine Benutzerdaten erhalten.
Alles anzeigen
Da ist aber noch nginx aktiv, den wollten wir doch mal temporär deaktivieren!?
ist alles deaktiviert
Auch mal den Proxymodus aus, aktuell schaltet sich der nginx noch dazwischen
header: Server: nginx
Der Nginx ist (afaik) immer an erster Stelle, den kann man bei einer geteilten IP-Adresse nicht deaktivieren. Auf dem HTTP[S] Port können ja nicht zwei Dienste gleichzeitig lauschen
Der Nginx ist (afaik) immer an erster Stelle, den kann man bei einer geteilten IP-Adresse nicht deaktivieren. Auf dem HTTP[S] Port können ja nicht zwei Dienste gleichzeitig lauschen
Ach Mist, stimmt hab das Shared Hosting aus den Augen verloren
Hast du etwas verändert, ohne Auth liefert mir https://www.retro-lan-projekt.de/wp-json/wp/v2/users gültige JSON Daten?
Auch ein GET auf https://www.retro-lan-projekt.de/wp-json/wp/v2/media funktioniert.
Stimmt ev doch etwas bei der Auth nicht, oder der User hat zu wenig Rechte?
Hab nun selbst etwas gescripted, setz in deinem Python Script einen anderen user-Agent Header, z.B.
response = requests.get("https://www.retro-lan-projekt.de/wp-json/wp/v2/users", headers={'user-agent':'curl'})
Damit bekomme ich einen 200 und Daten.
Nice
mit dem Header gehts zumindest lokal Der bot will den noch net aber dann schau ich mal
Meinste Nginx kann ich wieder aktivieren=?
Meinste Nginx kann ich wieder aktivieren=?
Probieren, das Ergebnis siehst du ja direkt
Den Agent String kannst du im Prinzip frei wählen, z.B. Upload-Bot.
Was klappt beim Bot noch nicht?
ich bekomme immer einen 500er Fehler
Hier mal der aktuelle Code:
bot = telebot.TeleBot(TOKEN)
# Aktiviere das Debugging für HTTP-Anfragen und -Antworten
logging.basicConfig(level=logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True
# Funktion zum Senden von Nachrichten
def send_message(chat_id, text):
bot.send_message(chat_id, text)
@bot.message_handler(content_types=['photo'])
def handle_photo(message):
# Das letzte Foto in der Liste auswählen
file_id = message.photo[-1].file_id
download_and_upload_media(file_id, message.chat.id)
def download_and_upload_media(file_id, chat_id):
try:
# Datei herunterladen
file_info = bot.get_file(file_id)
downloaded_file = bot.download_file(file_info.file_path)
# Datei an WordPress senden
response = upload_media_to_wordpress(downloaded_file)
if response is not None and response.status_code == 201:
send_message(chat_id, "Die Datei wurde erfolgreich hochgeladen!")
else:
send_message(chat_id, "Es gab ein Problem beim Hochladen der Datei.")
except Exception as e:
logging.error("Fehler beim Verarbeiten der Datei: %s", e)
send_message(chat_id, "Es gab einen Fehler beim Verarbeiten der Datei.")
def upload_media_to_wordpress(file_data):
# WordPress-Anmeldeinformationen
login = (USERNAME, PASSWORD)
# Dateinamen mit einem eindeutigen Timestamp erstellen
timestamp = int(time.time())
filename = f"photo_{timestamp}.jpg"
# Datei hochladen
# headers = {
# 'Content-Disposition': f'attachment; filename="{filename}"',
# 'Content-Type': 'image/jpg',
# 'User-Agent': 'curl'
# }
try:
response = requests.post(WORDPRESS_URL + '/wp/v2/media', files={'file': BytesIO(file_data)}, headers={'user-agent':'curl','Content-Disposition': f'attachment; filename="{filename}"'}, auth=login)
return response
except requests.exceptions.RequestException as e:
logging.error("Fehler beim Hochladen der Datei: %s", e)
return None
bot.polling()
Alles anzeigen
Auch hier hilft es wenn du die Debuginfos mitlieferst (Request/Response, Webserverlog).
sry
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.telegram.org:443
DEBUG:urllib3.connectionpool:https://api.telegram.org:443 "GET /bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/getMe HTTP/1.1" 200 249
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.telegram.org:443
DEBUG:urllib3.connectionpool:https://api.telegram.org:443 "GET /bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/getUpdates?offset=1&timeout=20 HTTP/1.1" 200 997
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.telegram.org:443
DEBUG:urllib3.connectionpool:https://api.telegram.org:443 "GET /bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/getFile?file_id=AgACAgIAAxkBAAPeZkEkSWK79xTUx7jeqcwLQMD5RN4AAqzXMRuRLhBKoV4o3-sw2ZABAAMCAAN5AAM1BA HTTP/1.1" 200 205
DEBUG:urllib3.connectionpool:https://api.telegram.org:443 "GET /file/bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/photos/file_44.jpg HTTP/1.1" 200 497676
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): www.retro-lan-projekt.de:443
DEBUG:urllib3.connectionpool:https://www.retro-lan-projekt.de:443 "POST /wp-json/wp/v2/media HTTP/1.1" 500 None
DEBUG:urllib3.connectionpool:https://api.telegram.org:443 "POST /bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/sendMessage?chat_id=878984314&text=Es+gab+ein+Problem+beim+Hochladen+der+Datei. HTTP/1.1" 200 309
send im beitrag drunter:
reply: 'HTTP/1.1 500 Internal Server Error\r\n'
header: Server: nginx
header: Date: Sun, 12 May 2024 20:20:36 GMT
header: Content-Type: application/json; charset=UTF-8
header: Transfer-Encoding: chunked
header: Connection: keep-alive
header: X-Robots-Tag: noindex
header: Link: <https://www.retro-lan-projekt.de/wp-json/>; rel="https://api.w.org/"
header: X-Content-Type-Options: nosniff
header: Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link
header: Access-Control-Allow-Headers: Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type
header: Allow: GET, POST
header: Expires: Wed, 11 Jan 1984 05:00:00 GMT
header: Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
header: Vary: User-Agent
DEBUG:urllib3.connectionpool:https://www.retro-lan-projekt.de:443 "POST /wp-json/wp/v2/media HTTP/1.1" 500 None
send: b'POST /bot6389694216:AAHXPY7TNslqh5g091M0H-ei_FnG0X2Yjig/sendMessage?chat_id=878984314&text=Es+gab+ein+Problem+beim+Hochladen+der+Datei. HTTP/1.1\r\nHost: api.telegram.org\r\nUser-Agent: python-requests/2.28.2\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 0\r\n\r\n'
Alles anzeigen
send: b'POST /wp-json/wp/v2/media HTTP/1.1\r\nHost: www.retro-lan-projekt.de\r\nUser-Agent: curl\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Disposition: attachment; filename="photo_1715545236.jpg"\r\nContent-Type: image/jpg\r\nContent-Length: 452961\r\nAuthorization: Basic R3Vya2UyNTg6TjdzTSByN2hGIHhZd3AgRzFqZSBHNVBjIFpOUlI=\r\n\r\n'
send: b'--ebd7ae86d8cd1a95d59073ec0a9e3efa\r\nContent-Disposition: form-data; name="file"; filename="file"\r\n\r\n\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00`\x00`\x00\x00\xff\xe2\x02dICC_PROFILE\x00\x01\x01\x00\x00\x02T\x00\x00\x00\x00\x04\x00\x00\x00mntrRGB XYZ \x07\xe7\x00\x03\x00\t\x00\n\x009\x00\x00acsp\x00\x00\x00\x00\x00\x00\x00\x00GOOG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\x00\x00\x00\xd3-GOOGaG5(\xd5\xaa\xa3\x11\xe1C\xdf\xc9>\xfa\xa2h\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bdesc\x00\x00\x01\x08\x00\x00\x00@cprt\x00\x00\x01H\x00\x00\x00Zwtpt\x00\x00\x01\xa4\x00\x00\x00\x14bkpt\x00\x00\x01\xb8\x00\x00\x00\x14rXYZ\x00\x00\x01\xcc\x00\x00\x00\x14gXYZ\x00\x00\x01\xe0\x00\x00\x00\x14bXYZ\x00\x00\x01\xf4\x00\x00\x00\x14rTRC\x00\x00\x02\x08\x00\x00\x00 chad\x00\x00\x02(\x00\x00\x00,bTRC\x00\x00\x02\x08\x00\x00\x00 gTRC\x00\x00\x02\x08\x00\x00\x00 mluc\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0cenUS\x00\x00\x00$\x00\x00\x00\x1c\x00s\x00R\x00G\x00B\x00 \x00I\x00E\x00C\x006\x001\x009\x006\x006\x00-\x002\x00.\x001\x00\x00mluc\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0cenUS\x00\x00\x00>\x00\x00\x00\x1c\x00C\x00o\x00p\x00y\x00r\x00i\x00g\x00h\x00t\x00 \x00(\x00c\x00)\x00 \x002\x000\x002\x003\x00 \x00G\x00o\x00o\x00g\x00l\x00e\x00 \x00I\x00n\x00c\x00.\x00\x00\x00\x00XYZ \x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\x00\x00\x00\xd3-XYZ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00XYZ \x00\x00\x00\x00\x00\x00o\xa0\x00\x008\xf5\x00\x00\x03\x90XYZ \x00\x00\x00\x00\x00\x00b\x97\x00\x00\xb7\x87\x00\x00\x18\xd9XYZ \x00\x00\x00\x00\x00\x00$\x9f\x00\x00\x0f\x84\x00\x00\xb6\xc3para\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02ff\x00\x00\xf2\xa7\x00\x00\rY\x00\x00\x13\xd0\x00\x00\n[sf32\x00\x00\x00\x00\x00\x01\x0cB\x00\x00\x05\xde\xff\xff\xf3\'\x00\x00\x07\x93\x00\x00\xfd\x90\xff\xff\xfb\xa3\xff\xff\xfd\xa4\x00\x00\x03\xdc\x00\x00\xc0n\xff\xdb\x00C\x00\x04\x03\x03\x04\x03\x03\x04\x04\x03\x04\x05\x04\x04\x05\x06\n\x07\x06\x06\x06\x06\r\t\n\x08\n\x0f\r\x10\x10\x0f\r\x0f\x0e\x11\x13\x18\x14\x11\x12\x17\x12\x0e\x0f\x15\x1c\x15\x17\x19\x19\x1b\x1b\x1b\x10\x14\x1d\x1f\x1d\x1a\x1f\x18\x1a\x1b\x1a\xff\xdb\x00C\x01\x04\x05\x05\x06\x05\x06\x0c\x07\x07\x0c\x1a\x11\x0f\x11\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\x1a\xff\xc2\x00\x11\x08\x03\xc3\x05\x00\x03\x01"\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1c\x00\x00\x02\x03\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x02\x03\x06\x01\x07\x00\x08\xff\xc4\x00\x1b\x01\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x03\x04\x05\x06\x07\xff\xda\x00\x0c\x03\x01\x00\x02\x10\x03\x10\x00\x00\x01\xc3\x0c\x0b\x9b2\xa6\x8d\xb1X9R\xea\x88\xd8ph\x07\xe4\'cX\xb4\xe1\x88\xa3A\x9f\xd0\x088\x8ekD\x12\xea\xa2\x08TZM\xac+p\x83\x11\x8a\xab \xc6\xc3\xc5(\x08\xccy\xaa\xca\xf1\xc820\xa6\x80Z\xfc\x96f\x19UV\x92)S\xaeK\xd1<\xec\x83\xfd\x0e\x19kp.\xadI\x12\xd1"\xf1sx\xb3\xd8\xb1\xda\x81)\x81\xc7\x16*\xa2\x01\xa2\xb1\'\x19\xbb\\\x85\xca\xd6iSq\xed\x17K\x86,g@\x94\x04+\x93\xe1\x9e\xc8n{A\xd1\x9eK\xc6(\xaf\xe7\x10$,\x95\x97\xea\xfe=\xeb\t\xb1\xc6\x13o\x92|\xe1&n\x87O-n\xb7<\xfe\x8d\xde\x83\n\xfb\x9f\xad\xe1\x9d\x90|\xbbo\x90k\xa4\xd1R\x8d\x8c\x8f\x02^\xc5W\x84\x0b\xf0\x055\x00\xfa\xd6\x9e.\xa5\xa3\x95N\xd2\xc1\xca\xd6\x0fu\xcf\x19\xae\xb6\xa4,p/3J\xbc\x155\x17\x02\x82\xe6:\xfa\x9b\x8e\xc1[Q[\xac\x18\x9a\tUH\x03\xa0\xaeq\xe6\x1d\xa4\xdd7\x15\xe7\x1a\r\x86e\x8f\x0f\x7f\xceB\xe71]+\xfa\xea\x0c\xdc+\x06\xa36D\xaa\x10i\x8e\xf6\xf5\x17\xcb\xf7\x9e[\xd8\xadH\xe6C\xd4T\xf7\xd2P\xae\xe0]\xbcUf\x1e\x95\x19\xeeo}\xa9LN\xce\xaeM\xa8\xc7\x88\xbdHN\xe33\xac\xc8\xa7\x17%<\xfba\x95k\x8b\xe8#\x0bQ\xab\xe9\x0f_\xbb-\xad\xf3\xd7\x07\x89\xd1\xd5\xb92\xcb5\x9d\xde\xa9,d\xaf\xbd\xcd]\n\x98\xd6\xeb\x0b\x92\xe6\x86\xd5U\xcc\xdd\xa6\xdf\x8a\x87e\xf5\xb9\xe1\x8boQ\x7fG\x82\xc3#\xf5r_liP\x8e\xda\xfbu\xcdz5\x89]\xd4\xdb\xc5\x93\x16\xd9\x98=NS\x98?\xc6^[\x95\x9f\x04P.\xaa.h\x97\xc4\x12\\>\x82\'A\x9c\x99\xad5CU\r\x10\x9a2\xa1\x01\x96\x1c-D,5\x16^\t\x84\x9a\x91\x90\x00Ym\x17B\'\t\x9b\x15\x04_Qk@\x91\n#eU4g`\xd7\xd6\xbbM\xc7\x98zwFa\xb2[\xff\x00>\xd5\xce\x8c\x96\xb3\x95W\xe9>q\xbd\x1a5\x88\xde\xa9\r\x9cT\xc8-\xdc\x0c\x96\xdf\x1b\xac\xcd\xd1\xdd\xdc!tu|\x85\x06\x935\xcc\xd3\xd0\n1J\xb3L\xfa-F\xc4\xb8\x94\x0cj\xc5\x83\xe83:\xe8\xd4\xa8`0R\xa2=\xaaQ\x06\xda\x8b\xed\xac\xc0\xfe\x81\xa5@\x10\xa0\xe2\x07;2\x82+\x189\xae\'\xca\xb9_\xc1Z!:\\\xcd\xf5\x82\xf3\x1aN\xc6\xce\x94@\xb6\x9b\xec\xaa\xca\xc6\x8b\xe4[^F\x906r/\x89v\x7f\x89\x9f\xe9T\xc4\x93\x94q\xaed\xbdN&z`\x07V\x00\xc0i\xb1}\xfa\xb3~\x8f\xe7\xbe\xd1\xa9\x89\xc0\xfa\x06\'\x1c\xcdk1^\xb1\xa1<\xdd\xb9\xed\xab$\xd1\xf5\xdc\xb6\xc2i\xa6\x06\xe3V\xfb\'\xa9\x8c\xaa\xf3\x00\xc4x\xa1\x916D\x80\xfa\x12G\x90\x05`n\xbb\\\xb1\xbd\xa6\x00<\x18jP\x02\xd0 \xf6\xfc\xa4\x130\x0cZ-Z\xde\x89\x08\xaa\x10X$\x18\xd1k\x0ce\x8dT+\x98W\x80t\x97\xb7E\\1\x10f\x1eE\xc0\xc8\x88\xc4hW0\x81,k\xad\x95\x15\xa8\xe4\x8d{N\x9c5\xb5\x00\x8a\x81\x06\x10\xa0\xbe\x89\x9e,s\xb45\xa2\x17}aZ\xd6\xc9\xed{-\xa2\xc7\x7f\x8d\xf8\xaa\xeb\xeb\x1f\x87\xae\xa0\xd5\xbc\xe9{\x071Z\x8bM\x91\xea\x14+h\x1b\xb4\x8d\x82\xf4\x86\x14\x07\xd0\x11\n\xfb%\xabO\xa5\x8cAak\x1f\xa0W\xc1\x0e\xf5\x9f\x19\xf5\xfdd_)\xf5\xff\x00 \xd9\x8dce\xe4\x8al\xd5\xe6\x8fy\xea\xcb\x98\xd0\x9a\xf0\xf1\x81\xdd\x1f-\xe6\xdb\x0c\xa3\xfeO\xa0\xf4V\x89\\]\xa3\xcb\x10\xe8\xf2\xdc\xad\x9c.O\xe9D\x8b\x9a\x04\xf1s\x05\xc2=\xae\xe9V\xc8\x06t\xd1ei\x0b(\xeb\x10Z\xaev\x08cYP\x00Yh\x96\xd96\xcb\xb4\x08\xab\x1c\xab&\xa4\x9dd\xadH\xcb\xab\xaaRe]\xa1\xa6\x83?\xa4\xce\xd7;x\xcd\xec+O\xa2U\x91\xbe\xf8b_\xebS:\xe1ZF\x8b:\xf3\x99t\x17\xc1\x8d\xb3\x04r\x9d\xde\xb56\x85\xac\xb9&\xec\x86\x93\x1f\xd1TjM\x87~\xa2\xb6\xd8\xc3p\xd9\xea\xbee\xaf\x13\x9a\xf9\xcd\xef\x9f(\xdc=E+X\xf3\xda\xe2G+%\xff\x00y\xe7\xa2`4\xe7\xd4\xbe\xf3\xbd\x80\x92\xc2z\x16>\xc1\x1d\n /\x1b\x18g\xf6\x98\xddr\xe7\xb8&\x19o\xb4\xea\xbb\xe8n\x94#y!mCS\xf4N\\\x15\x1f\xf7;H\x16\n5\x11\x98\xff\x00@\xc2\xa8\xbcQ\n)\x1d\xe0\xdc\x19\x12y\x17I*\x00\xfet`\x0e\x1e\xc5\xd29\x18\x85\xe9\t\xbc\x08\xbc$"i-+\xe1YZ~6\x10\xd9H\xb2\x90\x93\x83\xa5\x01uN\x06\x0b\xf1\xd59)["k\x19\xc9\x93E\xcc\xd8\x1b\x97\xaa\xfcp\xf2&V\x89@\x8e\x80\xb2\t\x0f\xaf\x9d\x01|\x0f2\x15c\xb5\xb6\x05\x10&\xe6ew8\x81\x01\xd3I*i\xd0Q%E\xa4\x0e\xec\x95~\xad\xe6[}\x13C\xe5\xde\x9d\x80\xe8g\xce4Z\x06g\xd0\xd7\x94v\xcf\xed\x84\xaegp\xf3\x16\xa1\x19\xd3\xf2>~\xc64q\xfd\x17\xa6\xbd\xcfh\xb4\xb6\x1b\x03\xe8\xfes\xc8\xdf\xf34l+\x0c\xfa\xac\xfa\x95Z\xd7\xf1\xb2\xcc\xd3\x02/%k5\xd4\x18g*r\x02\xf92\x16\xb0 v\x0bk\xde\x19\xa33@\xa3Y*\xaa,\xec\xedsD\x99\xf2J\xa5S\xe5v\xc8\x98h\xc9\x18\tth\x0b\x888;$%0\x89h\xbc\xfa\xd2k\n[\xbf\xf3\xdaS\xbd\xceh1\xb6M\xd0\xa5X\xca4h\xb4\xf9\x80\xbc\xa8\xe4\x98@v\xe9\xbb\t\x93V\xd8\x1e\x95cF\xcb4?\xab\x85<\x97\x9a\xbb\xaf|\xfb\xd5\xf7\xd4\x83JJ~e\x8d\x18y\xff\x00jm\x16ki\x9a\xba\x98\xe6\x13)\xef\xaf\xb1\xab\xcfs\x9f\x08\xda\xe4\xb65Y\xe7\xbe\x8f\xe7\xa5\xda\xbe\x8d\xe6;\x81y\xd6\xa5\xd1\x92M0$\xaf\x06\xb0a\xadaW\xd1\xba\x15}\x11)\xd62\x86\xc3\xd3\xe5\xfa$\xeb5\xadaH\x16\xbb\xda\x94\xd9\x01\x15_(-61E\xaf\xa2\xf2\x1aI\xb3\xb2\x08h&\x02!\x90\xe1\x84\xc4[\xd5M\xa2\xa8\x10XmjH\xab\xa4\xc9\xda\x91o\x8bI\xf4a\x0b\x1cE\\Q\xf3@\xa2\xa20\x02V5\xf3\xa5\x8c\x06.\xedh\xab`\xcf\xb6X\xad\xab*\x11c\xcbf\x89\xcb\xc6!dcU\xa2\nW\x16\x962\xb9-\xb2\x13z\xb6\xe4\xb0\xb4B\xaa\xad\x1b0\xa4\xce\xd9\xd6X\xbbW\xd3\xb1\xfa\xfc\xf7F\xbc\x10G\x89^q\xd8\xd1\'>\xb8\xef+\xa6\x9a\xb1?\x18\x07G\xcb\xe7Si2\xfc\xde\xc7\xa8i\xf2:\xed\r\x98\xf3?R\xf2NOH\xe1X\x85J\x85:\xa4\xd74\xfb\x94-l\x90\x1bT5|P\xa4\xb1m@U\xd7h\xb4\x9a\xac\'ZPG\x05\xb4\x167|%\x163\x8a\xcf\x85\x02\x80\xd9\xde\x8e\r\x0f\x91\x85Se\xa7\xdc\xeb\xee\xfa \x99\\I\xa0Tc\x8a3\x98W\xb3\x07\x15\xc1k\xb2\x1b\x8cV\x1e\xb6\x19,r\xcd\xfa.\xbcb\x0c\xef\xc4V2\xb6\x93"\x8f\x9c\xdf^W3\xb0\xef\xa0\xad/\xa7b\xf6\x9c\xab]X\x8d\xbf\x1a\xef3\xdf\xa9?mT.\x0fc \x01\xb3\xc7\x00cL.\xe7B\xf9\x9a\xdd\x90}\xba\xb3{\x15~\x81\x95\xf3\xedH\xab9\xc7\xcbB\x9a\xe8\xfc\xb0*\xe5\xb9{4\xce9Wyz]\x16\x7f\xd5\xd4\xc8\xe4\x13\xf6\xbc\xdd\x1d\xe8.e\x19N\xa68\xd9\x00\xe7$\xce\xfd\xe9\xd1\xaaAs\x1b\xa4Wm\xa21l$\xacU]e\xa3;9\x12\xab\xe9X\xd2`\xaf/\x1f\xea!!\x9a\xa3\x14|j\xee,$^\x84\xf2\xdb\x82\xb9\xda\x02\xd8+\xb7\xc6\n\xd0\x0b\'\xd64\xd6\x84s\xd2\xddo\xc5\x03\xf33c\x13\x1f]wF\xb9@Yjz\xa1\xbdaEE\xa0\xca\xd75\xd9\xc1\xe3\x1a\x18\xa5\x92,L\xe9?Z9U\xa8\xecD\xb6\tNt\x15[>I\x9c\x8b\xe8\xb4\x8f]\x06\xeb\xb7\xd7\xe4\xf4\x108\xc8oj*\xc3\xaa\xdf\xf9\xa7\xa2\xd7\xb7?\x9a\xda\xe7z\x1eu\x0eK\xd0\xbc\xdb\x1e\xff\x00]\xd3\xe5\xb5W\xaa\x7f\x10\xf7\x7f\t\xe5\xf5\xd9\x0e#,\xd0y\xdfD\x94\xda\x10\xcdc"\xd2\xb5\x0b\x02C)U\xfa\xc6\x8a\xea\xa8y\x9d\x01`\xd5}C\xc3\xc2\x06\xc2\xc33Rk\x97/\xb2\xfa.m\x8d\xd3n\x01\xe4\xdd\x80\xa1\xaa\xee\xb5\x02\xc0\xf3\x1c!\xbfLVKb\x1e\xbb\xbc\xe7Z\xad\xe6j\xc2\xdbJ\x91\xde+\x98r\x8c\xc6U\xe2\x1d\xc2\xde\
Bei 1 müsste meiner Meinung nach der Content-Type: multipart/form-data sein.
Das Bild kommt erst bei 2.