javascript - AWS SDK S3-如何在 putObject 方法中包含凭据

标签 javascript amazon-web-services amazon-s3 aws-sdk

不再使用这个 HTML 表单:

<form action="https://s3.us-east-1.amazonaws.com/BUCKET" method="post" encType="multipart/form-data">

   <input type="hidden" name="key" value="${filename}" /><br />

   <input type="hidden"  name="Content-Type" value="image/jpeg" /><br />
   <input type="hidden" name="x-amz-server-side-encryption" value="AES256" />
   <input type="hidden"   name="X-Amz-Credential" value="MY_CERDENTIALS" />
   <input type="hidden"   name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" />
   <input type="hidden"   name="X-Amz-Date" value="20180817T040045Z" />

   <input type="hidden" name="Policy" value='MY_POLICY' />
   <input type="hidden" name="X-Amz-Signature" value="MY_SIGN" />
   File:
   <input type="file"   name="file" /> <br />

   <input type="submit" name="submit" value="Upload to Amazon S3" />
 </form>

我想在 javascript 中使用 ASW SDK 方法 putObject。我设法创建了这段代码:

AWS.config.update({
    endpoint: new AWS.Endpoint('https://s3.amazonaws.com'),
    accessKeyId: 'MY_ID', // the app does not run on AWS, so I need credentials
    secretAccessKey: 'MY_SECRET_KEY',
    s3ForcePathStyle: true,

  });
AWS.config.region = "us-east-1";

const params = {
  params:{
    Bucket: 'ballot-box',
  }
}


var bucket = new AWS.S3(params);


const requestParams = {
  Key: 'test.png',
  ContentType: 'image/jpeg',
  Body: file
}

bucket.putObject(requestParams,function(err,file){
  if(err)
    reject({error: err})
  else
    resolve({image: encode(file.Body)})

我现在的问题是,我不知道应该将策略、X-Amz-Signature、X-Amz-Date、X--Amz-Algorithm、X-Amz-Credential、x-amz- 放在哪里以及如何放置服务器端加密和 X-Amz-Date。

编辑:

我的存储桶的 CORS 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

最佳答案

browser-based upload via POST 移动时对于 JavaScript SDK,您无需提供 Policy、X-Amz-Signature、X-Amz-Date、X--Amz-Algorithm、X-Amz-Credential 或 X-Amz-Date。

如果需要,您可以提供 x-amz-server-side-encryption,您可以通过 ServerSideEncryption:“AES256”在 requestParams 中执行此操作。

关于javascript - AWS SDK S3-如何在 putObject 方法中包含凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51903981/

相关文章:

javascript - 如果输入了数据,请清空文本框

java - 使用 JMeter 对 1000 个用户进行负载测试时出现 Apache Tomcat Connection Refused 错误

javascript - HTML POST -> 重定向工作,XMLHTTPrequest -> 重定向不工作(无法从 null 发出任何请求)?

amazon-web-services - 从 AWS 代码构建中制作公共(public) s3 工件

javascript - 将事件附加到 SVG 路径

javascript - 使 javascript 在 Firefox 中的附加组件的 javascript 之后执行?

javascript - Shiny 的 Javascript 事件不适用于 $(#id) jQuery 选择器

java - 使用 java sdk 为 amazon s3 对象设置对象到期日期

amazon-web-services - 如何在 Cost Explorer 中跟踪 CreateVolume-Gp2 API 调用?

json - 解析大型单行 JSON 而无需将整个文件加载到内存中