Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有AWS JavaScript SDK的情况下将文件上载到S3?_Javascript_Amazon S3_Xmlhttprequest - Fatal编程技术网

如何在没有AWS JavaScript SDK的情况下将文件上载到S3?

如何在没有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支持使用表单上传从浏览器上传,而不需要在浏览器上使用特殊代码。它涉及一个特定的表单设计和一个签名的策略文档,该文档允许用户只上传与您施加的约束匹配的文件,而不

AWS SDK for
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扩展肯定是不可能的。