簡體   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