【问题标题】:upload base64 encode image to lambda function将base64编码图像上传到lambda函数
【发布时间】:2022-01-11 23:08:44
【问题描述】:

我想从邮递员上传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 需要文件而不是字节。

【问题讨论】:

    标签: python amazon-web-services aws-lambda


    【解决方案1】:

    API 需要文件路径,而不是原始字节。您有两种选择:

    1. 在 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')
      
    2. 如果我找到了正确的 API,upload_file 所做的就是将整个文件读入内存,然后使用该数据发出 PUT。您可以自己执行此操作,并跳过要求您先将数据写入文件的包装函数。

    【讨论】:

    • 非常感谢,您可以节省时间。
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2015-06-17
    • 2011-11-22
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多