【问题标题】:Invoke native file browser using phonegap使用 phonegap 调用本机文件浏览器
【发布时间】:2014-11-04 13:04:08
【问题描述】:

我必须在我的 phonegap 项目中实现文件上传功能。用户应该能够从手机内存或 SD 卡上传任何类型的文件。我使用 jQuery Mobile 框架设计的应用程序屏幕。我试过 input type="file",但在 android 4.4 中不支持。我也试过 phonegap 相机 API,但它只支持媒体文件。我发现了一些科尔多瓦插件(exm1,exm2)。但是这些插件使用自定义 UI。我想调用本机文件浏览器来选择文件,它必须在 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); 
} 

【问题讨论】:

    标签: jquery-mobile cordova cordova-plugins


    【解决方案1】:

    我能够让您的插件 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 选择窗口与此窗口之间的唯一区别是“内部存储”选项。

    希望这会有所帮助。

    【讨论】:

    • 多文件选择的语法是什么
    【解决方案2】:

    对于安卓你可以使用这个插件: 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

    【讨论】:

    • 我试过上面的插件(github.com/cdibened/filechooser)。但我无法让它发挥作用。 “filechooser.open”的第一个参数是强制性的吗?我必须通过什么来支持所有文件类型?在插件文档中,它写道“您应该更改清单中的 com.ianhanniballake.localstorage.documents 以及 LocalStorageProvider.AUTHORITY 字段”。我必须改变什么?
    • 阅读我链接的问题中的 tobik ansker (stackoverflow.com/questions/19882331/…)
    • @jcesammobile,我实现了这个插件,但它没有按预期工作。当用户选择第二个文件时,将触发第一个成功回调函数。同样,当用户选择第三个文件时,会触发第二个成功回调函数。我正在使用 Android 4.4.2 进行测试。
    • 下面是我的代码, $("#fileinput").bind('click',function(){ console.log("选择文件选择"); filechooser.open( {}, fileChooseSuccess, fileChooseFailed ); });函数 fileChooseSuccess(data) { var filepath = data.filepath; console.log("文件路径:"+文件路径); } 函数 fileChooseFailed(msg) { console.log(msg); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多