2015-03-31 147 views
2

正在使用ng-cordovafile-Transfer插件將圖片上傳至我的AWS s3 bucketCordova FileTransfer:將圖片上傳至AWS s3

但我遇到兩個問題,第一個它沒有工作,第二我不知道如何調試問題,而在仿真器上運行的應用程序。

這裏是我的代碼:

.controller('newItemCtrl', function($scope, $http, API_URL, me, $cordovaFileTransfer) { 
     var s3URI = encodeURI("https://mybucketname.s3.amazonaws.com/"), 
       policyBase64 = "MY_BASE64_ENCODED_POLICY_FILE", 
       signature = "MY_BASE64_ENCODED_SIGNATURE", 
       awsKey = 'my AWSAccessKeyId', 
       acl = "public-read"; 

     var options = { 
      fileKey: "avatar", 
      fileName: "image.png", 
      chunkedMode: false, 
      mimeType: "image/png" 
    //  params = { 
    //   "key": fileName, 
    //   "AWSAccessKeyId": awsKey, 
    //   "acl": acl, 
    //   "policy": policyBase64, 
    //   "signature": signature, 
    //   "Content-Type": "image/png" 
    //  } 
     }; 

     var imageURI = '../img/ionic.png'; 
     $scope.upload = function($cordovaFileTransfer) { 

      $cordovaFileTransfer.upload(s3URI, imageURI, options) 
       .then(function(result) { 
        console.log("SUCCESS: " + JSON.stringify(result.response)); 
       }, function(err) { 
        console.log("ERROR: " + JSON.stringify(err)); 
       }, function(progress) { 
        // constant progress updates 
       }); 
     } 
}) 

我也離開了參數Code問它的評論另外一個問題,但我跑我的應用程序之前,它給了我一個錯誤與PARAMS,但我的問題是,爲什麼我得到錯誤甚至在調用與控制器

回答

1

我也有類似問題的產生密切相關的模板,調試我用活的服務器日誌來檢查,看看文件上傳點擊服務器可言,有些錯誤,我注意到:

  • 我的服務器期待一個不同的文件密鑰
  • 的訪問控制允許來源頭部wasnt正在服務器的響應正確發送

然後,我還安裝了科爾多瓦本地通知插件(鏈接here)並在整個文件傳輸回調中撒上警報,以查看事情陷入困境的地方

無論如何,這可能不是調試的最佳方式,但它工作。

希望有所幫助。

...一件事的「選項」的PARAMS部分似乎最好的工作時,此格式適用於:

var options = { 
     fileKey: "avatar", 
     fileName: "image.jpg", 
     /*params: { 
      "value1":"value1", 
      "value2": "value2" 
     }*/ 
    }; 

    var params = new Object(); 
    params.value1 = "value1"; 
    params.value2 = "value2"; 
    options.params = params; 

從科爾多瓦docs「PARAMS:一套可選的鍵/值對來傳入HTTP請求(對象)「,因此在字典中傳遞可能會有微妙的差異,我不知道,我所知道的是,一旦我做出了這一改變,它就起作用了。

+0

你如何訪問服務器上的「params」對象?已經嘗試了幾個小時..沒有成功。 – jpgrassi 2015-05-31 17:05:59

+0

我經常在谷歌應用引擎上使用webapp2,並在那裏訪問「參數」,就像我從一個普通的帖子那樣,所以像這樣:「self.request.get('param_name')」。對於我使用self.request.POST ['image']的文件對象,其中'image'是我用於fileKey的。 – 2015-06-01 08:25:03

+0

因此,基本上你可以從POST對象中獲取它們,可能需要整個http帖子的某些日誌記錄才能找到正確的語法。 – 2015-06-01 08:34:53

0

要調試模擬器上我用這個從我的應用程序目錄:ionic emulate ios -lc

這說明我的錯誤或登錄到控制檯。