2012-03-01 13 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

答えて

0

てくださいすることができます。だから "/sdcard/download.txt"のようなものが動作します。

+0

FileTransfer.downloadメソッドを意味しますか?しかし、おそらくiOSには "/ sdcard"というパスはありません。私は、クロスプラットフォームでファイルをダウンロードするための信頼できる方法を探しています。 また、私のphonegapアプリに埋め込まれたWebViewがコンテンツの配置を検出したときにダウンロードを開始しない理由を理解できません。 – Alfz

1

問題がアンドロイドのみである場合、これはあなたを助けるかもしれません。アンドロイドで試してみましたが、これも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"); 
     } 
関連する問題