找到了解决方案:必须明确配置s3客户端以使用Amazon的新签名v4。发生错误是因为它默认为旧版本,从而导致不匹配。一点点脸药-
当时还不是用boto3文档编写的,尽管亚马逊的人说应该很快。
该方法得到了简化,因为它现在可以精确返回所需的字段:
def s3_upload_creds(name): BUCKET = 'mybucket' REGION = 'us-west-1' s3 = boto3.client('s3', region_name=REGION, config=Config(signature_version='s3v4')) key = '${filename}' return s3.generate_presigned_post( Bucket = BUCKET, Key = key )
这意味着可以轻松生成表格:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> {{ creds }} <form action="https://mybucket.s3.amazonaws.com" method="post" enctype="multipart/form-data"> {% for key, value in creds.fields.items() %} <input type="hidden" name="{{ key }}" value="{{ value }}" /> {% endfor %} File: <input type="file" name="file" /> <br /> <input type="submit" name="submit" value="Upload to Amazon S3" /> </form></html>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)