我正在使用ionic2实现一个简单的应用程序,它调用使用Flask构建的API。设置配置文件时,我向用户提供上传自己图像的选项。 我想将它们存储在S3存储桶中并通过CloudFront提供服务。
经过一些研究,我只能找到有关的信息:
当前端与API交互时,我无法找到有关如何处理blob /文件的任何信息。当我开始研究我想到的选项时:
我觉得所有这些方法都是完全错误的,但我无法思考(或找到)正确的做法。
我应该如何处理它?</ p>
答案 0 :(得分:2)
让服务器为客户端生成pre-signed URL以上传图像。这意味着服务器可以控制URL的外观并且不会泄露任何机密,但客户端可以将图像直接上传到S3。
Generating a pre-signed URL in Python using boto3看起来像这样:
s3 = boto3.client('s3', aws_access_key_id=..., aws_secret_access_key=...)
params = dict(Bucket='my-bucket', Key='myfile.jpg', ContentType='image/jpeg')
url = s3.generate_presigned_url('put_object', Params=params, ExpiresIn=600)
ContentType
是可选的,客户端必须在上传到Content-Type
期间设置相同的url
HTTP标头;如果已知,我发现限制允许的文件类型很方便。