2014-11-04 20 views
8

我必須在我的phonegap項目中實現文件上傳功能。用戶應該能夠從手機存儲器或SD卡上傳任何類型的文件。我使用jQuery Mobile框架設計的應用程序屏幕。我試過輸入類型=「文件」,但它不支持在Android 4.4。我也嘗試過phonegap camera API,但它僅支持媒體文件。我發現了一些cordova插件(exm1exm2)。但是這些插件使用自定義用戶界面。我想要調用原生文件瀏覽器來選擇文件&它必須在Android平臺的Android &中工作。有沒有辦法實現相同的?使用phonegap調用本機文件瀏覽器

我發現cordova文件選擇器插件(https://github.com/cdibened/filechooser)將有助於android平臺,但我無法使其工作。成功回調函數不會立即在文件選擇後觸發(使用android 4.4.2進行測試)。請找我的代碼如下,

<input type="file" id="fileinput" name="fileinput"/>

$("#fileinput").bind('click',function(){ 
    console.log("choose file selected"); 
    filechooser.open({}, fileChooseSuccess, fileChooseFailed); 
}); 
function fileChooseSuccess(data) { 
    var filepath = data.filepath; 
    console.log("file path:"+filepath); 
} 
function fileChooseFailed(msg) { 
    console.log(msg); 
} 

回答

0

爲Android,你可以使用這個插件: https://github.com/cdibened/filechooser

輸入文件應在Android上工作過(在大多數版本的,但它不」 t工作在Android 4.4,4.4.1和4.4.2) HTML file input in android webview (android 4.4, kitkat)

對於iOS沒有插件,您沒有本機文件瀏覽器。

示例項目 https://github.com/jcesarmobile/FileBrowserAndroidTest

+0

我試過上面的插件(https://github.com/cdibened/filechooser)。但我無法使其工作。 「filechooser.open」的第一個參數是強制性的嗎?我必須通過支持所有文件類型? 在插件文檔中,它寫道:「您應該在您的Manifest以及LocalStorageProvider.Authorority字段中更改com.ianhanniballake.localstorage.documents」。我必須改變什麼? – 2014-11-06 07:06:34

+0

閱讀tobik ansker的問題我鏈接(http://stackoverflow.com/questions/19882331/html-file-input-in-android-webview-android-4-4-kitkat) – jcesarmobile 2014-11-06 07:27:16

+0

@jcesammobile,我實現了這個插件,但它沒有按預期工作。當用戶選擇第二個文件時,第一個成功回調函數被觸發。同樣,當用戶選擇第三個文件時,第二個成功回調函數也會被觸發。我正在測試Android 4.4.2。 – 2014-11-06 09:46:59

3

我能得到你的插件,文件選擇工作。

有一些必須做雖然某些事情。 你需要打開你的編輯器

  • FileChooser.java
  • FileChooserActivity.java
  • FileListAdapter.java
  • FileListFragment.java
  • LocalStorageProvider.java

    ,並附加以下

    import your.package.name.R; 
    

    到這些文件中的每一個。

下面是演示代碼我使用:

<html> 
<head> 
    <title>Hello World</title> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
    <script type="text/javascript"> 
    document.addEventListener("deviceready", function(){ 

     var success = function(data) { 
      alert("File chosen: " + data.filepath); 
     }; 

     var error = function(msg) { 
      console.log(msg); 
     }; 

     $('#fileinput').click(function(e) { 
      filechooser.open({}, success,error); 
     }); 
    }); 
    </script> 

</head> 

<body> 
    <input type="file" id="fileinput" name="fileinput"/> 
</body> 
</html> 

此外,要知道的是,作者的意圖這奇巧4.4.4使用。它可能適用於較低版本,但他不確定。

請注意,HTML5選擇窗口與此之間的唯一區別在於「內部存儲」選項。

希望這會有所幫助。

+0

多文件選擇的語法是什麼 – 2015-12-26 17:23:17