2015-11-29 61 views
0

無法將文件上傳到S3工作。話雖如此,我知道問題在我身上。如何使用Angular/Node上傳文件到S3 ng-file-upload

此刻,我可以使用文件上傳到S3:https://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html

現在,如果我複製並粘貼形式對我的應用程序,只是發佈形式,它的工作原理。

下一步我正在做的是將硬編碼值移入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

爲什麼授權設置爲未定義? 此外,請嘗試'acl':'public-read-write' – fhollste

回答

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'聲明更改爲

if ($cookieStore.get('token') && config.url != "https://yourbucket.s3.amazonaws.com/") 

希望這可以幫助別人。

+0

也讓我感謝..修復後發佈修復程序! – RenRock

相關問題