Eine Azure-Funktion HTTP-Bindung liest von einem Azure-Blobspeicher ein Bild als Base64-Zeichenfolge.Zurückgeben von base64-Bildern aus Azure-Funktionen als Binärdaten
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQTEhIUEhIUFBUV…K9rk8hCAEkjFMUYiEAI+nHIpsQh0AkisDYRTOiCAbWVtgCtI6IlkHh7LDTQXLH0EIQBj//2Q==
Er wandelt es einen neuen Puffer mit:
const buf = new Buffer(pictureObj.data.split(",")[1], "base64");
Dann es gibt diese auf diese Weise puffern:
context.bindings.res = {
"status": 200,
"headers": {
"Content-Type": type || "image/jpeg"
},
"body": new Uint8Array(buf)
};
Leider funktioniert das nicht. das Setzen von "isRaw" funktionierte nicht so gut wie das Zurückgeben des Puffers (buf) selbst. Der Fehler ist 406 (nicht akzeptabel) und der Textkörper ist leer.
Die Frage ist: Wie würde man eine Base64 als Binärbild durch eine HTTP-Out-Bindung zurückgeben?
Auch einen weiteren Header (wie zB Content-Length) Zugabe nicht mit diesem Fehler:
info: Worker.Node.2a68d094-3858-406b-a0c5-a81497b3436b[0]
Worker 2a68d094-3858-406b-a0c5-a81497b3436b malformed message invocationResponse.outputData.data.http.headers: string{k:string} expected
[03/12/2017 02:44:32] A ScriptHost error has occurred
[03/12/2017 02:44:32] Error: Choose either to return a promise or call 'done'. Do not use both in your script.
[03/12/2017 02:44:32] Error: Choose either to return a promise or call 'done'. Do not use both in your script.
Experimentiert mit Anwendung/Oktettstream Inhaltstyp und Ergebnis ist das gleiche. Wenn Sie nicht den Inhaltstyp festlegen, wird der Puffer als Base64-Zeichenfolge zurückgegeben. –