我正在使用Java的servlet和HTML表单构建服务器。
我已设法上传文件:用户到达HTML页面,选择他/她想要在他/她的树文件夹中上传的文件。该文件被发送到我在服务器上编写并下载的servlet(实际上我现在只在localhost上运行它,因此服务器是我的'My Documents'文件夹。)
我想做的下一步是这一步: 用户(一旦登录,但我将设法做到这一点)到达HTML页面,选择服务器托管的文件并下载。
为了实现它,我将向'Download Servlet'发送文件名。所以这是我的问题:
为了确定这两个持续点,请看一下:
List<FileItem> items = null;
items = upload.parseRequest(request);
FileItem item = items.get(0);
String fileName = item.getName();
上面的块捕获请求中的文件夹的名称。我真正想要做的是,如果请求中的内容是String(=捕获请求中包含的String),则执行相同的操作。
答案 0 :(得分:0)
File
API将为您提供选择目录中文件所需的内容。
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");
然后,您可以将该文件名附加到某个目录结构,然后在文件系统中找到它。