繁体   English   中英

如何使用 python 中的 AWS Lambda 从文件上传表单获取 POST 数据

[英]How to get POST data from file upload form with AWS Lambda in python

我有一个简单的 AWS Lambda function,它显示一个带有文件上传输入的 HTML 表单。 提交表单后,我无法弄清楚如何获取文件数据。 我可以从文本输入中获取常规文本数据,但不能从文件上传中获取二进制数据。 我听说 API 网关可以做一些事情,但由于 30 秒的超时,我现在正试图避免这样做。 有谁知道如何获取从此表单发布的二进制文件数据? 我正在使用 function URL 来访问(技术上不是触发器,但这是触发函数的原因)表单。

import json
import os
import logging
from xml.etree import ElementTree as ET

logger = logging.getLogger()
logger.setLevel(logging.INFO) # ALL TRACE DEBUG INFO WARN ERROR FATAL OFF

def lambda_handler(event, context):
    logger.info(str(event))
    div = ET.Element('div')
    p = ET.SubElement(div, 'p')
    p.text = 'test'
    form = ET.SubElement(p, 'form', attrib={'method': 'POST', 'enctype': 'multipart/form-data', 'action': '/'})
    input = ET.SubElement(form, 'input', attrib={'type': 'file', 'name': 'filename'})
    input = ET.SubElement(form, 'input', attrib={'type': 'submit', 'value': 'Update Profile'})
    a = os.listdir('/tmp')
    logger.info(str(a))
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'text/html'},
        'body': ET.tostring(div, encoding='utf8', method='html').decode('utf8')
    }

我强烈建议您使用 AWS SDK 之一使用直接 S3 上传。 AWS Lambda 最适合处理事件,而不是上传等内容传输。

或者,如果您确实需要将内容直接传输到 Lambda,也可以使用 API 网关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM