我试图弄清楚如何通过 Python 中的 API 调用接收浏览器发送的文件。
允许 Web 客户端发送任何类型的文件(比如 .txt、.docx、.xlsx 等)。我不知道我是否应该使用二进制文件。
这个想法是在 S3 之后保存文件。现在我知道可以使用像 Aws Amplify 这样的 js 库并生成一个临时 url,但我对该解决方案不太感兴趣。
任何帮助表示赞赏,我已经在 Python 中广泛搜索了一个解决方案,但我找不到任何实际工作的东西!
我的 API 是私有的,我使用无服务器进行部署。
files_post:
handler: post/post.post
events:
- http:
path: files
method: post
cors: true
authorizer:
name: authorizer
arn: ${cf:lCognito.CognitoUserPoolMyUserPool}
Run Code Online (Sandbox Code Playgroud)
编辑
我有一个适用于文本文件但不适用于 PDF、XLSX 或图像的半解决方案,如果有人有我会非常高兴
from cgi import parse_header, parse_multipart
from io import BytesIO
import json
def post(event, context):
print event['queryStringParameters']['filename']
c_type, c_data = parse_header(event['headers']['content-type'])
c_data['boundary'] = bytes(c_data['boundary']).encode("utf-8")
body_file = BytesIO(bytes(event['body']).encode("utf-8"))
form_data = parse_multipart(body_file, c_data)
s3 = boto3.resource('s3')
object …Run Code Online (Sandbox Code Playgroud) 我正在尝试对 AWS API Gateway 中的 REST API 进行身份验证,它通过命令行受 AWS Cognito 保护,以对 API 进行一些安全测试。所以,我应该发送身份验证令牌来获得答案,除非我不知道如何获得该令牌!
我们的 Cognito 用户池配置为授权代码授予流程和隐式授予,但未针对客户端凭据进行配置。我在研究期间发现的一切都是关于客户端凭据的,所以如果有人有一个实际使用这些参数的命令行,那就太好了!