使用POST请求在AWS S3上基于浏览器的文件上传

亚伦·威尔弗雷德(Aaron Wilfred)

这是我的HTML POST表格。

<html>
  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  </head>
  <body>

  <form action="http://sigv4examplebucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
    Key to upload: 
    <input type="input"  name="key" value="user/user1/${filename}" /><br />
    <input type="hidden" name="acl" value="public-read" />
    <input type="hidden" name="success_action_redirect" value="http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html" />
    Content-Type: 
    <input type="input"  name="Content-Type" value="image/jpeg" /><br />
    <input type="hidden" name="x-amz-meta-uuid" value="14365123651274" /> 
    <input type="hidden" name="x-amz-server-side-encryption" value="AES256" /> 
    <input type="text"   name="X-Amz-Credential" value="AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request" />
    <input type="text"   name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" />
    <input type="text"   name="X-Amz-Date" value="20151229T000000Z" />

    Tags for File: 
    <input type="input"  name="x-amz-meta-tag" value="" /><br />
    <input type="hidden" name="Policy" value='<Base64-encoded policy string>' />
    <input type="hidden" name="X-Amz-Signature" value="<signature-value>" />
    File: 
    <input type="file"   name="file" /> <br />
    <!-- The elements after this will be ignored -->
    <input type="submit" name="submit" value="Upload to Amazon S3" />
  </form>

</html>

我是从下面显示的AWS S3 Docs中获得的。

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html

从AWS控制台中,我已获得安全凭证,如下所示。

在此处输入图片说明

我知道我需要为“策略”和“ X-Amz签名”设置值,但是我不确定如何做到这一点。

在文档中,他们提到我需要StringToSign并获取策略/签名,但是我不确定如何做到这一点。

在此处输入图片说明

有人可以帮助我如何为我的HTML表单生成策略和签名吗?

幼稚的

您将必须从后端计算签名。请按照以下详细信息计算要自己实施的签名

那将是这样的

$kDate = hash_hmac('sha256', $short_date, 'AWS4' . $secret_key, true);
$kRegion = hash_hmac('sha256', $region, $kDate, true);
$kService = hash_hmac('sha256', "s3", $kRegion, true);
$kSigning = hash_hmac('sha256', "aws4_request", $kService, true);
$signature = hash_hmac('sha256', base64_encode($policy), $kSigning);

或者,您可以使用您选择的任何AWS开发工具包

例如,使用PHP SDK可以实现:

Aws\Signature\S3SignatureV4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

使用HTTP POST的AWS S3浏览器上传给出无效签名

使用浏览器JavaScript SDK检查AWS S3上是否存在文件?

通过 AWS-Java SDK 为浏览器签署 S3 上传请求

没有访问密钥的AWS S3 JavaScript浏览器上传

使用 API 网关、AWS LAMBDA 和 S3 从浏览器检索文件

通过浏览器将异常对象放到AWS S3上的意外错误(putObject)

如何使用php访问在浏览器上可见的s3私有图像

是否等效于具有Azure Blob存储的基于S3浏览器的POST策略?

如何在Golang中编码POST策略-基于浏览器的上载到Amazon S3?

如何直接从浏览器使用 S3 的多部分 API 上传 > 5GB 的文件?

将文件上传到S3存储桶后,基于事件的AWS Glue Crawler触发器?

Amazon S3上传图像-直接从浏览器使用angular js

将文件从浏览器上传到S3

在Ubuntu 14.04上无法使用任何浏览器上传文件,为什么?

使用PHP SDK在Amazon S3上上传文件

在移动设备上使用基于Chromium的浏览器时,MP3 Playback 503错误

如何使用django-ckeditor在admin中的服务器上上传文件和浏览器文件?

直接从浏览器将图像上传到Amazon S3-使用angular js

在Heroku上使用Django将大型文件上传到AWS S3存储桶而没有30s请求超时

Elixir中的浏览器POST命令的S3签名

从浏览器缓存提供图像时,AWS S3 + CloudFront出现CORS错误

AWS S3 存储桶策略不适用于移动浏览器

来自浏览器JS SDK的AWS S3 multipart / uploadPart静默失败

在浏览器中打开对象URL时,AWS S3访问被拒绝

从heroku访问s3内容时,AWS访问密钥显示在浏览器URL中

AWS S3访问策略-Web浏览器与API

s3上传文件后请求

如何使用Loopback API Explorer浏览器上传文件?