Ich habe eine AWS Lambda-Funktion, um ein Formular mit Feldern einschließlich einer Datei von S3 zu einem HTML-Server zu senden.So senden Sie eine Multipart/Formulardaten mit einer Datei von AWS S3
import requests
url = 'http://...'
# ...
self.session = requests.session()
# ...
filename = 'mammals/aboutzebras.doc'
data = {
"name":"document",
"method":"upload"
}
resource = boto3.resource('s3')
objectSummary = resource.ObjectSummary('bucket', filename)
body = objectSummary.get()["Body"]
file_content = body.read()
files = {'file': ('content', file_content, 'application/doc;charset=utf8')}
page = self.session.post(
url,
files=files,
data=data
)
print("Status code = %s" % page.status_code)
# >> Status code = 500
Ich bin immer erfolgreich die Daten aus einer MS-Word-Datei von AWS S3 und es in file_content
setzen, aber muss ich base64 es kodieren? (Ich habe es ohne Erfolg versucht).
Auf Anfrage Objekt von requests.post
schickte ich in den Header sehen Content-Length
richtig eingestellt ist, Content-Type
ist multipart/form-data
und dass ein bounday
gesetzt.
Mein Anruf an self.sessions.post
gibt einen Statuscode von 500 vom Server zurück, den ich anrufe. Was fehlt mir?
Wenn ich an die url
mit einem <form>
in einem HTML-Dokument einreichen dann bekomme ich ein status_code
von 200
zurück und alles ist gut.