Метеоритная рогатка - загрузка файла в AWS S3, ожидающая, а затем сбой с ошибкой 400 Bad в случайных случаях
Я пытаюсь загрузить изображение в AWS S3 в Meteor/Slingshot. Загрузка ожидается в течение долгого времени, а затем не удалась (400 Плохой запрос). Некоторые файлы удалось загрузить, но в большинстве случаев этого не происходит. Кажется, это происходит случайно.
Каковы причины, которые могут вызвать это?
Ведро S3 находится в Ирландии "ЕС-Запад-1". Вот код, который у меня есть:
В settings.json:
{
"public": {
},
"AWSAccessKeyId" : <keyID>,
"AWSSecretAccessKey" : <Secret>,
"AWSBucket" : <bucket_name>,
"AWSRegion": "eu-west-1"
}
Приложение / Библиотека /_fileUploadRestrictions.js
Slingshot.fileRestrictions("imageUploads", {
allowedFileTypes: ["image/png", "image/jpeg", "image/gif"],
maxSize: 10 * 1024 * 1024 // 10 MB (use null for unlimited).
});
приложение / сервер /fileUploadDirectives.js
Slingshot.createDirective("imageUploads", Slingshot.S3Storage, {
region: Meteor.settings.AWSRegion,
bucket: Meteor.settings.AWSBucket,
acl: "public-read",
expire: 200,
authorize: function () {
//Deny uploads if user is not logged in.
if (!this.userId) {
var message = "Please login before posting files";
throw new Meteor.Error("Login Required", message);
}
return true;
},
key: function (file) {
//Store file into a directory by the user's username.
var userId = Meteor.userId();
return "userfilies" + "/" + userId + "/" + "images" + "/" + file.name;
}
});
приложение / клиент /fileUploader.js
Template.fileUploader.events({
'change .fileinput': function(event, template) {
var fileToUpload = event.target.files[0];
var fullUpload = new Slingshot.Upload("imageUploads");
fullUpload.send(fileToUpload, function (error, downloadUrl) {
if (error) {
toastr.error("Upload failed... please try again.");
console.log(error);
console.log(fullUpload.xhr.response);
}
else {
toastr.success('Upload succeeded!');
}
});
Template.instance().uploader.set(fullUpload);
},
});