1

我正在使用 Java 的 servlet 和 HTML 表单构建服务器。

我已经设法上传文件:用户到达一个 HTML 页面,在他/她的树文件夹中选择了他/她想要上传的文件。该文件被发送到我在服务器上编写和下载的 servlet(实际上我目前只在 localhost 上运行它,所以服务器是我的“我的文档”文件夹)。

我想做的下一步是:用户(一旦登录,但我会设法做到这一点)到达一个 HTML 页面,选择一个由服务器托管的文件并下载它。

为此,我必须将文件名发送到“下载 Servlet”。所以这是我的问题:

  • 如何列出 HTML 页面上“我的文档”中的文件。
  • 如何将所选文件的名称发送到 servlet。
  • 如何捕获“请求”并从中生成名称字符串。

为了精确这两点,请看一下:

List<FileItem> items = null;
items = upload.parseRequest(request);
FileItem item = items.get(0);
String fileName = item.getName();

上面的块捕获请求中的文件夹的名称。如果请求中的内容是字符串(=捕获请求中包含的字符串),我实际上想要做的是做同样的事情。

4

1 回答 1

0

FileAPI 将为您提供选择目录中文件所需的内容。

List<File> files = Arrays.asList(new File("/your/directory").listFiles());

List<String> fileNames = new LinkedList<>();
for (File file : files) {
    fileNames.add(somePrefix + file.getName());
}

request.setAttribute("fileNames", fileNames);

我这样做是因为出于安全原因,您可能不想提供文件的真实路径。在请求属性中获得文件名列表后,您可以在 jsp 中迭代它们。

<form ...>
    Select a file:<br />
    <c:forEach items="${fileNames}" var="fileName">
        <input type="radio" name="fileName" value="${fileName}">
    </c:forEach>
    <input type="submit" name="submit" value="submit">Submit
</form>

现在,每个文件都附加到一个输入元素,该元素将转换为请求参数。提交表单后,您可以通过执行访问选择文件名

String fileName = request.getParameter("fileName");

然后,您可以将该文件名附加到某个目录结构并在文件系统上找到它。

于 2013-08-23T21:35:34.760 回答