如何使用Angular / Node ng-file-upload

时间:2015-11-29 01:49:33

标签: angularjs node.js amazon-s3 ng-file-upload

无法将文件上传到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);
})

1 个答案:

答案 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/")

希望这有助于其他人。