我想從郵遞員上傳 base64 編碼的影像到 lambda 函式。
{
"name": "vendor"
"image": "base64-enoceded"
}
Lambda 函式
try:
data = json.loads(event['body'])
name = data['name']
image = data['image']
image = base64.b64decode(data['image'])
cdn_object = CDNConnector('bunny_cdn_api_key','assets')
cdn_object.upload_file('vendor-assets/', image)
return {
'statusCode': 200,
"body": json.dumps("File uploaded")
}
except Exception as e:
return {
"statusCode":200,
"body": str(e)
}
但是當我在解碼字串后顯示檔案時,我收到了這個錯誤“嵌入的空位元組”,它顯示了類位元組。但是我想要解碼后的實際檔案,即解碼后的images.png,我將上傳到CDN,因為CDN需要檔案而不是位元組。
uj5u.com熱心網友回復:
API 需要檔案路徑,而不是原始位元組。您在這里有兩個選擇:
在 Lambda 函式中,您最多可以將 512 Mb 寫入 /tmp。在 /tmp 中打開一個二進制檔案,在此處寫入您的資料,然后使用該檔案路徑進行上傳。
with open('/tmp/image.png', 'wb') as fout: fout.write(image) cdn_object.upload_file('vendor-assets/', '/tmp/image.png')如果我正確地找到了 API,upload_file 所做的就是將整個檔案讀入記憶體,然后使用該資料發出 PUT。您可以自己執行此操作并跳過要求您首先將資料寫入檔案的包裝函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/375521.html
