2013-01-11 25 views
1

我試圖將從相機捕獲的圖像上傳到服務器。下面的方法適用於任何Android設備,但由於某種原因,它在iOS上失敗。它返回一個401錯誤,這沒有任何意義:Phonegap - iOS文件傳輸不與授權標頭一起使用

var options = new FileUploadOptions(); 
    options.fileKey="files[]"; 
    options.fileName = 'image_' + obj.id + '.jpg'; 
    options.mimeType="image/jpeg"; 
    options.chunkedMode = false; 

    var params = new Object(); 
    params.headers = { 
     Authorization: 'Basic ' + loginCreds 
    } 

    options.params = params; 
    var ft = new FileTransfer(); 
    ft.upload(imageURI, CONTEXT+'URL/files", 
     function(r){ 
      alert('Finished upload!'); 
      $.mobile.loading('hide'); 
     }, 
     function(error){ 
      console.log(error.http_status); 
      alert('Error uploading image: ' +error.http_status+ ' and code - ' +error.code); 
      $.mobile.loading('hide'); 
     }, 
     options, true); 

我知道有一個問題,在iOS中設置頭,但我認爲這是固定爲PhoneGap的1.9.0。我在這裏做錯了什麼?

我檢查了服務器日誌,它看起來像授權頭只是沒有在iOS中設置。奇怪...

回答

6

因此,經過整整一天的摔跤後,想出了這一個。所以事實證明,Android和iOS在如何使用headers參數方面有所不同。

安卓

var params = new Object(); 
params.headers = {Authorization: 'Basic ' + loginCreds}; 
options.params = params; 

OR

options.headers = {Authorization: 'Basic ' + loginCreds}; 

的iOS:

options.headers = {Authorization: 'Basic ' + loginCreds}; 

希望這樣可以節省有人的地方有些頭疼......

+1

您從撞我的頭救了我靠牆。謝謝! –

+0

它可以節省很多頭痛 –

+0

它可以節省我很多時間 – EmptyData