2016-12-13 2 views
0

Ich versuche, einen Flaschen-Server zu entwickeln, der ein Präsentationsobjekt basierend auf JSON-Daten und Dateien aus einer HTTP-Post-Anfrage generiert. Ich bin in der Lage, die Datei lokal mit dem gleichen Code zu generieren, aber wenn ich versuche, es als HTTP-Antwort zu senden ist fehlgeschlagen. HierSenden Präsentationsobjekt als HTTP-Antwort zum Download.

ist das Code-Snippet für sie als HTTP-Antwort zu senden -

prs_file_io = BytesIO() 
prs.save(prs_file_io) 
resp = Response() 
resp.status_code = 200 
resp.set_data(prs_file_io.getvalue()) 
return resp 

Und hier ist das Python-Skript die Anfrage zu senden und zu versuchen, die Datei zu speichern -

r = requests.post('http://localhost:8181/create-ppt', 
        #data=open('tile_resp.json', 'rb'), 
        files={'1': open('./0NtNFb0F9ch15fDrgYoECEpctPkjvayD.png', 'rb'), 
         'tile_data': open('tile_resp.json', 'rb')}) 
print(r.content) 

Und schließlich I pipe die Ausgabe vom Anforderungsskript in eine pptx-Datei.

Aber das funktioniert nicht, keine Ahnung, welchen Fehler ich hier mache?

+0

Ich bin nicht so vertraut mit pptx, aber ich nehme an, Ihre Antwort sollte einen bestimmten Mimetyp/Content-Type haben? – VKolev

+0

Sind 'r.content' genaue Daten, wie Sie erwarten? – Andersson

+0

@VKolev - Sollte der Inhaltstyp nicht automatisch festgelegt werden? – yashdosi

Antwort

0

Wie darüber informiert:

response = make_response(prs_file_io.get_value()) 
response.headers['Content-Type'] = "application/vnd.openxmlformats-officedocument.presentationml.presentation" 
response.headers['Content-Description'] = 'attachment; filename=example.pptx' 
return response 

make_response ist ein Verfahren von Flask siehe make_response()

Würde das funktionieren, wenn die Antwort eine PPTX-Datei enthalten sein sollte?