2012-03-01 77 views
1

我試圖在服務器上下載一個動態生成的文件。 嘗試使用phonegapbuild 1.4.1的簡單應用程序。PhoneGap的下載鏈接的問題android

首先,我嘗試了一個直接鏈接到服務器頁面,它通過http使用「content-type」和「content-disposition:attachment; filename =」標頭返回文件 。此下載鏈接在常規瀏覽器中可以正常工作。 但是當在phonegap應用程序中點擊這個鏈接似乎不起作用(至少在android 2.3.3中),當點擊鏈接時,調用服務器,但是 則沒有任何反應。

然後,我發現了一個名爲 FileTranfer.download的phonegap API函數。我不知道如何指定文件路徑, 如何知道默認的下載位置(跨平臺)? 我試過fileSystem.resolveFileSystemURI函數,但沒有發生 (沒有成功或失敗事件),我也試過以下 句子fileSystem.root.getDirectory(「download」,{create:true}); 並掛在那裏,下一行是警報從不執行。

任何人可以幫我,和我指向一個可靠的方式來下載 附件(最好通過直接鏈接到服務器)

+0

這是我的代碼中的一個錯誤,fileSystem.root.getDirectory工作正常。 – Alfz 2012-03-03 10:44:45

回答

0

它正在尋找一個完整路徑。所以像「/sdcard/download.txt」可以工作。

+0

你的意思是FileTransfer.download方法?但可能在iOS中沒有「/ sdcard」路徑。我正在尋找一種可靠的方式來下載跨平臺的文件。 此外,我不明白爲什麼嵌入到我的phonegap應用程序中的WebView在檢測到內容處置時未啓動下載:附件 – Alfz 2012-03-02 11:24:40

1

如果問題是隻有Android,那麼這可能會幫助你,我已經嘗試過它在Android,希望這將與IOS的工作。

enter code here 
function fun(){ 
var dfd = $.Deferred(function (dfd){ 
var remoteFile = "Your link"; 
var localFileName = remoteFile.substring(remoteFile.lastIndexOf('/')+1); 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 
fileSystem.root.getFile(localFileName, {create: true, exclusive: false}, 
    function(fileEntry) { 
var localPath = fileEntry.fullPath; 
if (device.platform === "Android" && localPath.indexOf("file://") === 0) { 
      localPath = localPath.substring(7); 
     } 

    var ft = new FileTransfer(); 
    ft.download(remoteFile, localPath, function(entry) { 
    dfd.resolve('file downloaded'); 
    // Do what you want with successful file downloaded and then 
    // call the method again to get the next file 
    //downloadFile(); 
      }, fail); 
      }, fail); 
      }, fail); 

      }); 
      return dfd.promise(); 

     } 
       fun().then(function(msg){ 
      if(msg==="file downloaded") 
      { 
      alert("Download complete"); 
      } 
      else 
      { 
      alert("Download error") 
      } 
      }); 
      function fail(){ 
      alert("error"); 
     }