1
我正在嘗試使用Amazon S3上傳簡單的JS圖像。以下是我的代碼。通過XMLHttpRequest將文件上傳到Amazon S3公開
JS:
host = "https://s3.eu-central-1.amazonaws.com/my.bucket.url/";
uploadAttachment = function(attachment) {
file = attachment.file;
key = createStorageKey(file);
form = new FormData;
form.append("key", key);
form.append("acl", "public-read");
form.append("Content-Type", file.type);
form.append("file", file);
xhr = new XMLHttpRequest;
xhr.open("PUT", host + key, true);
// ...
xhr.send(form);
};
createStorageKey = function(file) {
var date, day, time;
date = new Date;
day = date.toISOString().slice(0, 10);
time = date.getTime();
return "s3/attachments/" + day + "/" + time + "-" + file.name;
};
S3鬥政策:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my.bucket.url/*"
}
]
}
S3 CORS:
<?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>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
一切正常,ALM ost罰款,但上傳的文件不公開。而且,我甚至無法通過網絡界面將它們設置爲公開。我唯一能做的就是刪除它們。我真的需要這些文件公開。
如果可能的話,我真的很想在不使用任何訪問鍵的情況下完成此操作。
任何幫助真的很感激!
你知道你做了什麼,在這裏?您的存儲區可以匿名上傳。由任何人,從任何地方,沒有證書需要。這就是爲什麼你不能修改對象 - 你甚至不擁有它們......但它們在你的存儲桶中,所以你爲它們付錢,這就是爲什麼你仍然被允許刪除它們的原因。你真的需要回頭閱讀簽名和認證請求。不要試圖「修復」這一點。你有更大的問題。 –
謝謝你的建議。我知道發生了什麼事。我只想讓它工作,然後將其限制到單個域。你是說我還有**要簽署一切嗎? –
@ Michael-sqlbot請你澄清一下:是否有可能在沒有簽署請求的情況下公開提供上傳的文件? –