我正在尝试部署一个可以处理帖子请求的网站。为此,我设置了一个调用lambda函数的api网关。lambda的结构如下:
exports.handler = async (event) => {
// TODO implement
var ht = '<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><form method = "post"> <input type="file" id="myFile" name="filename"> <input type="submit"> </form></body></html>'
if (JSON.stringify(event['requestContext']['http']['method']) == '"GET"'){
const response = {
"statusCode": 200,
"body": ht,
"headers": {
'Content-Type': 'text/html',
}
}
return response;
}
if (JSON.stringify(event['requestContext']['http']['method']) == '"POST"'){
// forwards the uploaded file into s3
return 1
}
};现在,在get请求时,呈现的html页面包含一个选择文件的按钮和一个提交文件的按钮。这样做的想法是,在按下提交时,上传一个文件,从而触发post请求。我想知道如何从'Post‘if语句(第二个注释所在的地方)中的请求中提取这个文件,这样我就可以将它发送到一个s3桶中了。我还想知道,如何才能将html放在自己的index.html文件中,并在lambda函数中调用它,而不是让html成为一行呢?谢谢
发布于 2022-01-10 05:23:57
您可以使用代码检查https://github.com/mmakadiya/aws_lambda-API_gateway-Import-XML-data/tree/main。
事件“主体”将包含您导入的主体的内容。
--
导入json导入boto3
def lambda_handler(事件,上下文):# TODO实现打印(“V.1”) print("========================") print(事件) print("========================")
s3 = boto3.resource("s3")
s3.Bucket("my-files-maulik").put_object(Key = "MyFirstFile.xml", Body = event['body'])
print("**********body = " + event['body'])
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}https://stackoverflow.com/questions/70607326
复制相似问题