一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python在浏览器以HTTP POST上传文件至S3云服务

时间:2015-05-21 编辑:简简单单 来源:一聚教程网


我们可以在http页面中构造一个预先授权的http post表单,实现在浏览器端使用POST方式上传文件到S3。表单内容如下:

 
  
    S3 POST Form 
    
  
   
    ps://cypay-test.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
      
       
       
      
      
      
      
      
      File to upload to S3: 
       
      
                  


其中,value="upload/${filename}"为目的地址,目录会自动创建
name="success_action_redirect" value="http://your-success-page",上传成功之后的跳转页面
name="policy" value="xxxx" 用base64加密的policy字符串
name="signature" value="xxxx",用SECRET_KEY使用base64加密的签名
加密算法如下python版:

import base64
import hmac, hashlib
AWS_SECRET_ACCESS_KEY = r"xxxxxx"
policy_document ='''
{
  "expiration": "2020-01-01T00:00:00Z",
  "conditions": [ 
    {"bucket": "your-bucket"}, 
    ["starts-with", "$key", ""],
    {"acl": "private"},
    {"success_action_redirect": "http://your-success-page"},
    ["starts-with", "$Content-Type", ""],
    ["content-length-range", 0, 1048576000]
  ]
}
'''
policy = base64.b64encode(policy_document)
signature = base64.b64encode(hmac.new(AWS_SECRET_ACCESS_KEY, policy, hashlib.sha1).digest())
print policy
print signature


热门栏目