使用phonegap调用本机文件浏览器

时间:2014-11-04 13:04:09

标签: jquery-mobile cordova cordova-plugins

我必须在我的phonegap项目中实现文件上传功能。用户应该能够从手机记忆库或SD卡上传任何类型的文件。我使用jQuery Mobile框架设计的应用程序屏幕。我尝试输入type =“file”,但在android 4.4中不支持。我也试过了phonegap相机API,但它只支持媒体文件。我找到了一些cordova插件(exm1exm2)。但这些插件使用自定义UI。我想调用本机文件浏览器来选择文件&它必须适用于Android和Android iPhone平台。有没有办法实现同样的目标?

我发现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); 
} 

2 个答案:

答案 0 :(得分:3)

我能够获得你的插件,FileChooser正常工作。

但是有些事情必须要做。   您需要使用编辑器打开以下内容

  • 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>

另外,请注意作者希望将其用于KitKat 4.4.4。它可能适用于较低版本,但他不确定。

请注意,HTML5选择窗口与此之间的唯一区别是“内部存储”选项。

希望这有帮助。

答案 1 :(得分:0)

对于Android,你可以使用这个插件: https://github.com/cdibened/filechooser

输入文件也应该在android上工作(在大多数版本上,但它不能在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