如何在没有 AWS JavaScript SDK 的情况下将文件上传到 S3?
How to upload file to S3 without AWS JavaScript SDK?
适用于 JavaScript
的 AWS SDK(即使只包含 S3
组件)对于我的网络应用程序中的一些零星文件上传来说是一个巨大的体积。如果我有存储桶名称 accessKeyId
和 secretAccessKey
供我使用,是否有一种更精简的方法可以直接从客户端浏览器将文件上传到 S3 存储桶?
尝试使用 Extended S3 Browser(Chrome 扩展名)
S3 支持使用表单 post 上传从浏览器上传,浏览器不需要特殊代码。它涉及特定的表单设计和签名的策略文档,允许用户仅上传符合您施加的约束的文件,并且不会暴露您的密钥。上传后,它还可以选择将浏览器重定向回您的站点。
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html
要将文件从浏览器上传到 S3,您可以使用预签名 PUT。这样您就不会向浏览器泄露 aws 秘密。您可以使用 minio-js 库生成预签名 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
您可以将此预签名 URL 传递给浏览器,浏览器可以对 amazon s3 执行简单的 HTTP PUT。 PUT 请求将成功,因为签名将成为 presignedUrl 的一部分。
您也可以使用预签名 POST 上传。预签名 POST 对上传提供更多控制 - 比如您可以限制上传对象的大小、内容类型等。
适用于 JavaScript
的 AWS SDK(即使只包含 S3
组件)对于我的网络应用程序中的一些零星文件上传来说是一个巨大的体积。如果我有存储桶名称 accessKeyId
和 secretAccessKey
供我使用,是否有一种更精简的方法可以直接从客户端浏览器将文件上传到 S3 存储桶?
尝试使用 Extended S3 Browser(Chrome 扩展名)
S3 支持使用表单 post 上传从浏览器上传,浏览器不需要特殊代码。它涉及特定的表单设计和签名的策略文档,允许用户仅上传符合您施加的约束的文件,并且不会暴露您的密钥。上传后,它还可以选择将浏览器重定向回您的站点。
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html
要将文件从浏览器上传到 S3,您可以使用预签名 PUT。这样您就不会向浏览器泄露 aws 秘密。您可以使用 minio-js 库生成预签名 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
您可以将此预签名 URL 传递给浏览器,浏览器可以对 amazon s3 执行简单的 HTTP PUT。 PUT 请求将成功,因为签名将成为 presignedUrl 的一部分。
您也可以使用预签名 POST 上传。预签名 POST 对上传提供更多控制 - 比如您可以限制上传对象的大小、内容类型等。