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

Jquery mobile 使用phonegap调用本机文件浏览器,jquery-mobile,cordova,cordova-plugins,Jquery Mobile,Cordova,Cordova Plugins,我必须在我的phonegap项目中实现文件上传功能。用户应该能够从手机存储器或sd卡上传任何类型的文件。我使用jQuery移动框架设计的应用程序屏幕。我尝试输入type=“file”,但android 4.4不支持它。我也尝试过phonegap摄像头API,但它只支持媒体文件。我找到了一些cordova插件(,)。但是这些插件使用自定义UI。我想调用本机文件浏览器来选择文件&它必须在Android和iPhone平台上工作。有没有办法实现同样的目标 我发现cordova file chooser插

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

我发现cordova file chooser插件()对android平台很有帮助,但我无法让它工作。文件选择后不会立即触发成功回调函数(使用android 4.4.2测试)。请在下面找到我的代码


对于android,您可以使用以下插件:

输入文件也应该在android上工作(在大多数版本上,但在android 4.4、4.4.1和4.4.2上不工作)

对于iOS,没有插件,您没有本机文件浏览器

样本项目
我可以让你的插件FileChooser正常工作

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

  • FileChooser.java
  • FileChooseActivity.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>

你好,世界
document.addEventListener(“deviceready”,函数(){
var success=函数(数据){
警报(“所选文件:“+data.filepath”);
};
var error=函数(msg){
控制台日志(msg);
};
$('#fileinput')。单击(函数(e){
打开({},成功,错误);
});
});
此外,请注意,作者打算在KitKat 4.4.4中使用此选项。它可能适用于较低版本,但他不确定

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


希望这有帮助。

我尝试了上面的插件()。但我无法让它工作。“filechooser.open”的第一个参数是必需的吗?支持所有文件类型我必须通过什么?在插件文档中,写着“您应该更改清单中的com.ianhanniballake.localstorage.documents以及LocalStorageProvider.AUTHORITY字段”。我必须改变什么?阅读tobik ansker在我链接的问题()@jcesammobile,我实现了这个插件,但它没有按预期工作。当用户选择第二个文件时,将触发第一个成功回调函数。同样,当用户选择第三个文件时,将触发第二个成功回调函数。我正在用Android 4.4.2进行测试。下面是我的代码,$(“#fileinput”).bind('click',function(){console.log(“选择文件”);filechooser.open({},filechooseSucces,fileChooseFailed);});函数fileChooseSuccess(data){var filepath=data.filepath;console.log(“文件路径:“+filepath”);}函数fileChooseFailed(msg){console.log(msg);}让我们来看看。多文件选择的语法是什么
<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>