2012-01-30 118 views
6

我正在研究一个Web应用程序,它从一组文本文件读取数据并将其映射到MySQL数据库。服务器端文件浏览

目前,表单需要手动输入文件路径,但我想添加一个文件选择器到这个字段,使设置的一部分不那么繁琐。

我找到的解决方案都允许选择单个文件,但是我正在寻找一个允许使用输入模式的解决方案,因为我们的大部分工作都要求我们将多个文件从服务器中拉出来走。

在这个问题上的任何帮助,非常感谢。

+0

看看https://github.com/moskiteau/backbone-filetree – moskiteau 2014-03-12 14:33:19

回答

13

它花了很多搜索和一些工作,但我找到了一个合理可行的答案。

我面临的最大问题是浏览服务器端文件。我在A Beautiful Site找到了一个jQuery插件来解决这个问题。

这是一个AJAX文件浏览器,包含JSP,PHP,ASP等服务器端连接脚本。

$(document).ready(function() { 
    $('#loadFolderTree').fileTree({ 

     root: '/server_root/subfolder/tree_root', 
     script: '/js/jquery_file_tree/connectors/jqueryFileTree.jsp', 
     multiFolder: false, 

    });  
    }); 

这个脚本的好处是,它返回一个字符串所选择的文件路径:

我使用下面的脚本构建web应用程序的文件树。有一些小的补充脚本的默认文件处理,我能写返回的文件路径到相应的表单字段用下面的代码:

}, function(file) { 
      var loadPat = document.getElementById("loadPattern"); 
      loadPat.value = file.replace("/server_root/subfolder/tree_root/", ""); 

由于形式已经内置到相对的文件处理的根,不需要打印整个路径,因此最后一段代码会修剪到根目录的路径,并将表单值设置为字符串的其余内容。

最重要的是,返回的字符串是可编辑的,它允许用户在一次运行中将input-file-1.txt返回到input-file * .txt并导入多个文件。

这是最后的结果是:

$(document).ready(function() { 
    $('#loadFolderTree').fileTree({ 

     root: '/server_root/subfolder/tree_root', 
     script: '/js/jquery_file_tree/connectors/jqueryFileTree.jsp', 
     multiFolder: false, 

    }, function(file) { 
     var loadPat = document.getElementById("loadPattern"); 
     loadPat.value = file.replace("/server_root/subfolder/tree_root/", ""); 

    });  
    }); 
+0

它看起来像自2008年以来没有人一直保持着它,但它似乎仍然做好工作。 – 2014-08-15 06:56:03

+0

即将到来5年后(!),但我想知道你是否在这方面取得了很大的成功?我已经使用这个相同的情况,但是当我指向jqueryfiletree在我们的网络位置时,文件/文件夹在几层之后不是按字母顺序排列的。但是,指着我的本地C:\驱动器,它完美的工作。 – 2017-10-20 17:42:07

+0

是的,实际上我们仍然在我们的应用中使用它。在我们的文件列表开始变长之后不久,我注意到类似的排序问题。在将列表返回给浏览器之前,我必须修改用于执行手动排序的jsp连接器。 – Mike 2017-10-21 19:35:54