用 Java 实现文件上传功能
时间: 2024-05-02 17:21:19 浏览: 109
文件上传功能是常见的 Web 应用程序中的一项重要功能。下面是使用 Java 实现文件上传功能的步骤:
1. 创建一个 HTML 表单,包含一个文件选择输入框和一个提交按钮。如下所示:
```html
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
```
2. 创建一个 servlet,用于接收文件上传请求。在 servlet 中,可以使用 Apache Commons FileUpload 库来处理文件上传。代码如下所示:
```java
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
try {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();
InputStream inputStream = item.getInputStream();
// 处理文件上传
}
}
out.println("文件上传成功!");
} catch (FileUploadException e) {
out.println("文件上传失败:" + e.getMessage());
}
}
}
```
3. 在 servlet 中,可以使用文件输入流将上传的文件保存到服务器上的指定目录中。代码如下所示:
```java
String uploadDir = getServletContext().getRealPath("/uploads");
File uploadDirFile = new File(uploadDir);
if (!uploadDirFile.exists()) {
uploadDirFile.mkdirs();
}
File file = new File(uploadDirFile, fileName);
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
```
4. 配置 web.xml 文件,将 servlet 映射到 URL。代码如下所示:
```xml
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.example.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
```
5. 运行 Web 应用程序,上传文件并查看上传的文件是否保存在了指定的目录中。
阅读全文