0

我想创建一个目录选择器表单输入元素,它允许用户选择要选择的网络目录并将其作为服务器进程的目标传递。这个想法是用户将浏览网络共享,对用户的机器和 Web 服务器可见,并选择他们希望请求由服务器应用程序处理的文件夹。我希望它像<input type="file">标签一样工作,只允许选择文件夹而不是文件。

我已经读到 HTML 文件选择器输入不支持这种行为,但是使用 Java servlet 或 JavaScript 可能是可能的,尽管我没有发现任何代码可以证明这一点。是否可以创建这样的表单元素?我使用的是 Spring MVC 3,这是一个 Intranet 应用程序,所以安全性不是问题。我是基于 Java 的 Web 开发的新手,所以我真的不知道从哪里开始。

4

1 回答 1

0

您可以有一个界面供用户进出目录

servlet 或 Spring-MVC 控制器部分非常简单(不包括异常等)。

@RequestMapping(value = "/network/*")
@ResponseBody  // serialize to json since you are using javascript 
public List<String> getDirectory(@RequestParam("direction") String direction, HttpServletRequest request) {
    List<String> paths = new LinkedList<String>();

    String path = request.getRequestURI();
    path = path.substring(path.indexOf("/network") + 8); // gets everything after /network

    if ("up".equals(direction)) { // want to go up one folder
        File parent = new File(path).getParentFile(); // get the parent, this might return null so have to check
        paths.addAll(Arrays.asList(parent.list()));
    } else if ("into".equals(direction)) {
        File directory = new File(path); // get all the files in the current directory
        paths.addAll(Arrays.asList(directory.list()));
    }

    return paths;
}

然后,您将发出 ajax 请求

http://www.your-intranet.com/network/var/this/path/wanted?direction=into

检索其中所有文件和文件夹的 JSON 列表。或者

http://www.your-intranet.com/network/var/this/path/wanted?direction=up

相当于

http://www.your-intranet.com/network/var/this/path?direction=into

取决于您要在哪里执行路径提取逻辑(可能在服务器上,因为它知道它是否正确)。

UI 部分有点难,我不会深入,但您必须解析 json 并决定是否要显示文件夹图标或带有不同按钮的文件图标以进行不同的操作。

您还必须根据 Linux 或 Windows 操作系统使用路径。

于 2013-05-02T20:59:59.910 回答