小编A--*_*---的帖子

使用POST的基于Amazon AWS S3浏览器的上传 -

我正在构建一个包含文件上传功能的Web应用程序.我的目标是从用户直接上传到S3存储桶.策略是预先签署将作为表单提交的POST请求.

包版是一个SignatureDoesNotMatch错误 - 据我所知,我已经符合文档,并且已经探索了很多选项,但仍然无法解决.我能够生成预先签名的下载链接.

引用:

AWS POST文档

boto3 generate_presigned_post参考

生成签名请求:

def s3_upload_creds(name, user):
    s3 = boto3.client('s3')
    key = '${filename}'
    region = 'us-east-1'
    date_short = datetime.datetime.utcnow().strftime('%Y%m%d')
    date_long = datetime.datetime.utcnow().strftime('%Y%m%dT000000Z')
    fields = { 
        'acl': 'private',
        'date': date_short,
        'region': region,
        'x-amz-algorithm': 'AWS4-HMAC-SHA256',
        'x-amz-date': date_long
    }

    return s3.generate_presigned_post(
        Bucket = 'leasy',
        Fields = fields,
        Key = key,
        Conditions = [
            {'acl': 'private'},
            {'x-amz-algorithm': 'AWS4-HMAC-SHA256'},
            {'x-amz-credential': '/'.join(['AKI--snip--', date_short, region, 's3', 'aws4_request'])},
            {'x-amz-date': date_long}
        ]
    )
Run Code Online (Sandbox Code Playgroud)

上传表格(fields上面填写):

<html>
  <head>

    <meta …
Run Code Online (Sandbox Code Playgroud)

python post amazon-s3 amazon-web-services boto3

9
推荐指数
1
解决办法
4336
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

boto3 ×1

post ×1

python ×1