I ein AWS Lambda in Python 2.7 geschaffen, die eine ID empfängt, ruft die Datei von einem s3 bucket und wandelt es in Base64:AWS API-Gateway zurück Binärdatei von Base64 Browser Fehler
response = s3.Object(s3_bucket, r['prefix'] + str(id)).get()
data = base64.b64encode(response['Body'].read())
return data
alles stimmt Das generierte base64 ist getestet und korrekt. Es ist ein JPEG.
Jetzt auf api Gateway:
- erstellen API
- zu Binary Unterstützung binären Medientyp hinzufügen: image/jpeg
- GET-Methode, um Ressourcen hinzuzufügen.
- Add-Methode Antwort HTTP Status: 200 Modelle: image/jpeg => Leere
- hinzufügen Content-Type: = image/jpeg in "Intergration Response" Status 200> "Body Mapping-Vorlagen"
Mit Vorlagen dies:
$util.base64Decode($input.body)
Deploy API, Test ... und Browser gesagt: das Bild kann nicht angezeigt werden, weil sie Fehler enthält.
Ich versuchte hundert verschiedene Versionen ohne Ergebnis. Was ist mein Fehler?
Es ist nicht klar, warum Sie ein Bild als base64 zurückkehren möchten, aber vorausgesetzt, Sie haben Ihre Gründe, nicht Sie brauchen so etwas wie ein 'Content-Encoding hinzuzufügen: base64' Response-Header, damit der Browser versteht, worum es geht? –
Lambda-Funktion gibt ein Base64-Bild zurück. Ich möchte, dass API-Gateway eine Binärdatei zurückgibt. Dazu benutze ich '$ util.base64Decode ($ input.body)', funktioniert aber nicht gut. – Amedeo
Entschuldigung, ich habe Ihre Frage früher falsch gelesen. –