Я пытаюсь загрузить картинку в свой ведро S3. Я использую AngularJS v1.2.13.
Когда я использую простой случай, как показано в их документах (форма отправки с тегом action
), все работает нормально. Однако, если я хочу это сделать, Angular с ng-click
Angular отправляет запрос OPTIONS
вместо запроса POST
.
Ниже приведен код службы, он сначала отправляется на сервер, чтобы получить подпись (я знаю, что часть в порядке), затем пытается POST со всем.
myServices.factory('s3', function($http) {
var service = {};
service.upload = function(fileName) {
return $http(
{
method:"POST",
url: "sign",
data: { "fileName": fileName }
}
).then(
function(result) {
// success
//resolve the promise as the data
var data = result.data;
var url = "https://" + data.bucket + ".s3.amazonaws.com/";
return $http.post(url, {
"key": data.key,
"AWSAccessKeyId": data.awsKey,
"acl": data.acl,
"policy": data.policy,
"signature": data.signature,
"Content-Type": "image/jpeg",
"success_action_redirect": "http://localhost:3000/s3Uploaded"
}).then(
function(response) {
// success
console.log("s3.upload, success: ");
console.log(response);
},
function(response) {
// failed
console.log("s3.Upload, fail: ");
console.log(response);
}
);
},
function(response) {
// failed
console.log("s3.sign, fail: ");
console.log(response);
}
);
};
return service;
});
Что я делаю неправильно?