无法将文件上传到S3工作。话虽如此,我知道问题就在我身上。
目前我可以使用:https://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html
将文件上传到S3现在,如果我将表单复制并粘贴到我的应用程序,然后只发布表单,就可以了。
我正在做的下一步是将硬编码的值移动到Angular控制器,以尝试在实现服务器端创建策略和签名之前上传文件,尽管它似乎不起作用。
我得到的错误是授权:承载问题。
阅读之后,我尝试将授权设置为未定义,但仍然无效,我不知所措。
任何帮助将不胜感激。
以下代码:
var mypolicy = "HardcodedPolicy;
var mysignature = "HardcodedSignature";
var s3url = "https://myBucket.s3.amazonaws.com/";
Upload.upload({
url: s3url,
method: 'POST',
headers: {
'Authorization': undefined
},
data: {
key: 'testfile.txt',
acl: 'public-read',
"Content-Type": 'text/plain',
AWSAccessKeyId: 'XXX',
policy: mypolicy,
signature: mysignature,
file: uploadfile
}
}).error(function(err) {
console.log("err: ", err);
})
答案 0 :(得分:1)
我花了很多年时间试图找到解决方案,并最终让它发挥作用。我希望这个解决方案有助于其在我的情况下,问题是由我们的应用程序使用jwt令牌在用户调用我们的api时对用户进行身份验证。添加令牌的代码是在这样的角度工厂中:
App.factory('authInterceptor', ['$rootScope', '$q', '$cookieStore', '$location','$window',
function ($rootScope, $q, $cookieStore, $location, $window) {
return {
// Add authorization token to headers
request: function (config) {
config.headers = config.headers || {};
if ($cookieStore.get('token')) {
config.headers.Authorization = 'Bearer ' + $cookieStore.get('token');
}
return config;
}
}]);

我们使用的解决方案是修改conditon语句,以便仅在需要时添加授权标头。我们改变了“如果'声明
if ($cookieStore.get('token') && config.url != "https://yourbucket.s3.amazonaws.com/")
希望这有助于其他人。