Сначала необходимо создать корзину s3 и прикрепить эти политики.
если имя корзины 'DROPZONEBUCKET' (Bucket глобально уникален)
Политика
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::DROPZONEBUCKET/*"
}
]
}
CORS config
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>9000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Затем запустите сервер node.js и попробуйте загрузить файл.
Как только вы выберете файл для загрузки, он вызовет эту функцию getSignedUrl(file, callback)
и вернет URL.
Как только вы успешно получите этот URL, вы можете загрузить файл.
Тогда путь к файлу
https://s3.amazonaws.com/{BUCKET_NAME}/{FILE_NAME}
ех.
https://s3.amazonaws.com/DROPZONEBUCKET/profile.jpeg
Изменить API следующим образом
var s3Bucket = new AWS.S3();
var s3 = new Router({ mergeParams: true });
var params = {
Bucket: 'BUCKET_NAME', // add your s3 bucket name here
Key: data.filename,
Expires: 60,
ContentType: data.filetype
};
s3Bucket.getSignedUrl('putObject', params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});