如何在没有AWS JavaScript SDK的情况下将文件上载到S3?
AWS SDK for如何在没有AWS JavaScript SDK的情况下将文件上载到S3?,javascript,amazon-s3,xmlhttprequest,Javascript,Amazon S3,Xmlhttprequest,AWS SDK forJavaScript(即使只包含S3组件)对于我的webapp中的一些零星文件上传来说是一个巨大的容量。如果我有bucket名称、accessKeyId和secretAccessKey供我使用,那么有没有更简单的方法直接从客户端浏览器将文件上传到S3 bucket?Try use(Chrome extension)S3支持使用表单上传从浏览器上传,而不需要在浏览器上使用特殊代码。它涉及一个特定的表单设计和一个签名的策略文档,该文档允许用户只上传与您施加的约束匹配的文件,而不
JavaScript
(即使只包含S3
组件)对于我的webapp中的一些零星文件上传来说是一个巨大的容量。如果我有bucket名称、accessKeyId
和secretAccessKey
供我使用,那么有没有更简单的方法直接从客户端浏览器将文件上传到S3 bucket?Try use(Chrome extension)S3支持使用表单上传从浏览器上传,而不需要在浏览器上使用特殊代码。它涉及一个特定的表单设计和一个签名的策略文档,该文档允许用户只上传与您施加的约束匹配的文件,而不公开您的密钥。它还可以选择在上传后将浏览器重定向回您的站点
要将文件从浏览器上载到S3,可以使用预签名PUT。这样,您就不会向浏览器泄露aws机密。您可以使用该库生成预签名的PUT url 在服务器端,您可以生成预签名的PUT url,如下所示:
var Minio = require('minio')
// find out your s3 end point here:
// http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
var s3Client = new Minio({
url: 'https://<your-s3-endpoint>',
accessKey: 'YOUR-ACCESSKEYID',
secretKey: 'YOUR-SECRETACCESSKEY'
})
var presignedUrl = s3Client.presignedPutObject('bucket', 'object', 24*60*60)
// presignedUrl expires in 1 day
var Minio=require('Minio'))
//在这里找到您的s3终点:
// http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
var s3Client=新的Minio({
url:'https://',
accessKey:'YOUR-ACCESSKEYID',
secretKey:'YOUR-SECRETACCESSKEY'
})
var presignedUrl=s3Client.presignedPutObject('bucket','object',24*60*60)
//预签名1天后到期
您可以将这个预先签名的URL传递给浏览器,浏览器只需对AmazonS3执行简单的HTTP操作。PUT请求将成功,因为签名将是预签名的一部分
你也可以使用预先签名的帖子来上传。预先签名的帖子在上传上提供了更多的控制——比如你可以限制上传对象的大小、内容类型等。你可能被我的问题中的
浏览器
这个词误导了(我现在删除了它)——我的意思是从web应用上传文件。Chrome扩展肯定是不可能的。