Java Web应用程序中的文件上载和下载以及常见任务。 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例。
用例
我们的用例是提供一个简单HTML页面,客户端可以在其中选择要上传到服务器的本地文件。 在提交上传文件的请求后,我们的Servlet程序会将文件上传到服务器中的目录中,然后提供URL,用户可以通过该URL下载文件。 出于安全原因,不会为用户提供下载文件的直接URL,而是会为他们提供下载文件的链接,并且我们的Servlet将处理请求并将文件发送给用户。
我们将在Eclipse中创建一个动态Web项目,项目结构如下图所示。
让我们研究一下Web应用程序的所有组件并了解其实现。
用于上传文件HTML页面
我们可以通过向Servlet发送发布请求并提交表单来将文件上传到服务器。 我们无法使用GET方法上传文件。 还要注意的一点是,表单的enctype应该是multipart / form-data 。 要从用户文件系统中选择文件,我们需要使用类型为file的 输入元素。 因此,我们可以使用一个简单HTML页面将文件上传为:
index.html
<html>
<head></head>
<body>
<form action="UploadDownloadFileServlet" method="post" enctype="multipart/form-data">
Select File to Upload:<input type="file" name="fileName">
<br>
<input type="submit" value="Upload">
</form>
</body>
</html>
服务器文件位置
我们需要将文件存储到服务器上的某个目录中,可以在程序中对这个目录进行硬编码,但是为了获得更好的灵活性,我们将在部署描述符上下文参数中将其保持可配置状态。 另外,我们会将上传文件的html页面添加到欢迎文件列表中。
我们的web.xml文件如下所示:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"