android - 如何在 phonegap 中同时选择(选择)多个文件

标签 android cordova filepicker

我在这里进行了谷歌搜索,我没有找到任何与 phonegap 中的多文件选择器或选择器相关的可选解决方案。目前我可以在没有任何插件的情况下在 phonegap(适用于 Android)中一次选择一个文件 Using this to get file .如何在 phonegap 中一次选择或选择多个文件。请提出一些解决方案。

最佳答案

请试试这个:

下载这个演示..

http://ramkulkarni.com/temp/2012-04-09/FileChooser_PG_3_3.zip

将其替换为 index.html

    file_Browser_params = new Object()
    file_Browser_params.on_file_select = function (fileEntry)
    {
        //$("#fileMsgSpan").html("You selected " + fileEntry.fullPath);
        $("#fileMsgSpan").html("You selected " + fileEntry);
        return false;
    }

用这段代码替换所有的filebrowser.html

    <!--
        Author : Ram Kulkarni
                 http://ramkulkarni.com
    -->

    <div data-role="dialog" id="rk_file_dialog">

        <style media="screen" type="text/css">
            .file_icon{
                font-size:x-large;
                font-weight:bolder;
                background-color:#AAA;
                vertical-align:top; 
            }

            .small_btn {
                font-size:medium;
            }   

            .file_list_row {
                font-size:x-large;
            }
        </style>


        <script language="JavaScript">
            var currPath = "";
            var currEntry = null;
            var totalfile =[];

            if (typeof file_Browser_params == 'undefined')
                file_Browser_params = new Object();

            if (typeof file_Browser_params.directory_browser != 'boolean')
                file_Browser_params.directory_browser = false;

            if (typeof file_Browser_params.on_folder_select != 'function')
                file_Browser_params.on_folder_select = null;

            if (typeof file_Browser_params.on_file_select != 'function')
                file_Browser_params.on_file_select = null;

            if (typeof file_Browser_params.on_ok != 'function')
                file_Browser_params.on_ok = null;

            if (typeof file_Browser_params.new_file_btn == 'undefined')
                file_Browser_params.new_file_btn = true;

            if (typeof file_Browser_params.new_folder_btn == 'undefined')
                file_Browser_params.new_folder_btn = true;

            function init()
            {
                if (!file_Browser_params.new_file_btn)
                    $("#new_file_btn").hide();

                if (!file_Browser_params.new_folder_btn)
                    $("#new_dir_btn").hide();

                $("#new_file_btn").click(function(){
                    if (currEntry == null)
                        return;
                    var fileName = prompt("Enter File Name","untitled.txt");
                    if (fileName == null || fileName == '')
                        return;
                    currEntry.getFile(fileName,{create:false},function(){
                        alert("File already exists");
                    }, 
                    function(){
                        currEntry.getFile(fileName,{create:true}, function(){
                            //refresh current folder
                            getEntries(currEntry);
                        }, function(){
                            alert("Error creating file " + fileName);
                        });
                    });
                });

                $("#new_dir_btn").click(function(){
                    if (currEntry == null)
                        return;
                    var fileName = prompt("Enter Folder Name","untitled");
                    if (fileName == null || fileName == '')
                        return;
                    currEntry.getDirectory(fileName,{create:false},function(){
                        alert("Folder already exists");
                    }, 
                    function(){
                        currEntry.getDirectory(fileName,{create:true}, function(){
                            //refresh current folder
                            getEntries(currEntry);
                        }, function(){
                            alert("Error creating file " + fileName);
                        });
                    });
                });

                $("#file_browser_ok").click(function(){

                    var allurl="";
                    if(totalfile.length >0){
                        for(var j =0;j<totalfile.length;j++){
                            allurl += totalfile[j]+'<br>';
                        }
                    }
                    console.log(allurl);
                    file_Browser_params.on_file_select(allurl);

                });         

                if (typeof file_Browser_params.initial_folder == 'undefined' ||
                    file_Browser_params.initial_folder == null)
                {
                    file_Browser_params.initial_folder = null;
                    getRootAndDisplay();
                } 
                else
                {
                    getEntries(file_Browser_params.initial_folder);
                }
            }

            function getRootAndDisplay()
            {
                getRoot(function(dirEntry){
                    try {
                        getEntries(dirEntry);
                    } catch (err)
                    {
                        alertError(err);
                    }
                });
            }

            function getRoot(onGetRoot)
            {       
                if (typeof window.requestFileSystem != 'undefined') {
                    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
                        if (typeof onGetRoot != 'undefined')
                            onGetRoot(fileSystem.root);
                    }, function(){
                        log("Error accessing local file system");
                    });
                }

                return null;
            }

            function upOneLevel()
            {
                if (currEntry == null)
                    return;
                currEntry.getParent(function(parentArg){
                    getEntries(parentArg);
                }, function(error){
                    alert("Error getting parent folder");
                })
            }

            function getEntries(dirEntry)
            {
                if (dirEntry == null)
                    return;

                currPath = dirEntry.fullPath;
                currEntry = dirEntry;
                $("#curr_folder").html(currPath);
                var dirReader = dirEntry.createReader();
                dirReader.readEntries(function(entries){
                    displayEntries(entries);            
                }, function(err){
                    if (typeof err.message != 'undefined')
                        err = err.message;
                    alert(err); 
                });
            }

            function displayEntries(entriesArray)
            {
                entriesArray.sort(function(a,b){
                    var str1 = a.name.toLowerCase();
                    var str2 = b.name.toLowerCase();
                    if (str1 < str2)
                        return -1;
                    if (str1 > str2)
                        return 1;
                    return 0;
                });             

                $("#fileBrowser_entries").empty();
                var table = $("<table id='file_entry_table'></table>").appendTo("#fileBrowser_entries");

                var row = $("<tr class='file_list_row'><td class='file_icon'>D</td><td>..</td></tr>").appendTo(table);
                $(row).click(function(event){
                    upOneLevel();
                });

                for (var i in entriesArray)
                {
                    var isFolder = entriesArray[i].isDirectory;
                    var name = entriesArray[i].name;

                    if (file_Browser_params.directory_browser && !isFolder)
                        continue;

                    var row = $("<tr class='file_list_row'></tr>").appendTo(table);
                    $(row).data("entry", entriesArray[i]);
                    $("<td class='file_icon'>" + (isFolder ? 'D' : 'F') + "</td>").appendTo(row);
                    $("<td class='file_name'>" + name + "</td>").appendTo(row);
                    $(row).click(function(event){
                        var entryData = $(this).data("entry");
                        if (entryData.isDirectory) {
                            if (file_Browser_params.on_folder_select != null)
                            {
                                var ret = file_Browser_params.on_folder_select(entryData);
                                if (ret == false) {
                                    $('.ui-dialog').dialog('close');
                                    return;
                                }
                            }
                            getEntries(entryData);
                        } else if (file_Browser_params.on_file_select != null)
                        {

                            // console.log(entryData.fullPath);
                            // totalfile.push(entryData.fullPath);

                            var found = jQuery.inArray(entryData.fullPath, totalfile);
                            if (found >= 0) {
                                // Element was found, remove it.
                                totalfile.splice(found, 1);
                            } else {
                                // Element was not found, add it.
                                totalfile.push(entryData.fullPath);
                            }



                        }
                    });
                }
            }

            function alertError(err){
                if (typeof err.message != 'undefined')
                    err = err.message;
                alert(err);
            }

            init();
        </script>
        <div data-role="header">
            <h2>File Chooser</h2>
        </div>
        <div data-role="content">
            <b><span id="curr_folder"></span></b><br/>
            <a href="#" data-role="button" data-inline="true" id="new_file_btn" data-theme="b" class="small_btn">New File</a>
            <a href="#" data-role="button" data-inline="true" id="new_dir_btn" data-theme="b" class="small_btn">New Dir</a>

            <div id="fileBrowser_entries"></div>

            <a href="#" id="file_browser_ok" data-role="button" data-rel="back" data-theme="b" data-inline="true" id="file_browser_ok">OK</a>       
            <a href="#" data-role="button" data-rel="back" data-theme="b" data-inline="true" id="file_browser_cancel">Cancel</a>       
        </div>
    </div>

enter image description here

关于android - 如何在 phonegap 中同时选择(选择)多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868323/

相关文章:

ios - 如何在cordova 3.5.0 iOS中添加没有cli的插件

javascript - 如何将文件选择器添加到 angularjs 模板

c# - UWP 文件选取器 FileTypeFilter 异常

c# - 在 Windows Phone 8.1 中使用文件选择器保存图像

android - Android Studio 中其他模块的引用资源

java - 将图像作为 Base64 字符串从 cms 发送到 Google Cloud 端点

plugins - 无法使用 Cordova 插件

java - 如何在应用程序进入后台时停止服务

android - 选项菜单锁定在 galaxy s4 上

android - 禁用后如何启用用户可缩放(视口(viewport)属性)?