我正在开发一个项目,要求我使用javascript直接从浏览器将大文件上传到Amazon S3。
有谁知道怎么做?是否有支持此功能的Amazon Javascript SDK?
答案 0 :(得分:3)
尝试使用EvaporateJS。它拥有庞大的社区和广泛的浏览器支持。 https://github.com/TTLabs/EvaporateJS
答案 1 :(得分:1)
如果您可以在服务器端添加逻辑,您可以向浏览器返回一个预签名的 S3 上传 URL,并将文件直接上传到 S3。
This answer 有类似的代码,但使用的是 AWS SDK v2。
Javascript 中的示例 (source):
const { S3, PutObjectCommand } = require("@aws-sdk/client-s3");
const { getSignedUrl } = require("@aws-sdk/s3-request-presigner");
...
const credentials = {
accessKeyId: "KEY", // UPDATE THIS
secretAccessKey: "SECRET", // UPDATE THIS
};
const options = {
credentials,
region: "REGION", // UPDATE THIS
apiVersion: "2006-03-01", // if you want to fix the api version, optional
};
const s3Client = new S3(options);
// Create the command
const command = new PutObjectCommand({
Bucket: 'BUCKET', // UPDATE THIS
Key: 'OBJ_ID_ON_S3', // UPDATE THIS
});
// Create the presigned URL
const signedUrl = await getSignedUrl(s3Client, command, {
expiresIn: 60 * 2, // This makes the URL expires after 2 min
});
答案 2 :(得分:0)
使用aws-sdk-js从浏览器直接上传到s3。就我而言,文件大小可能会达到100Gb。我使用分段上传,非常易于使用。
我必须在专用存储桶中上传,为了进行身份验证,我使用了WebIdentityCredentials。您还可以选择使用CognitoIdentityCredentials。