Java文件上传下载实现与配置详解

3星 · 超过75%的资源 | 下载需积分: 9 | TXT格式 | 12KB | 更新于2025-01-07 | 198 浏览量 | 163 下载量 举报
1 收藏
"本文将介绍如何在Java中实现文件上传和下载功能,主要涉及使用Apache Commons FileUpload库来处理文件上传,并提供一个简单的Servlet示例。" 在Java Web开发中,文件上传和下载是常见的需求。Java标准库并没有提供直接处理文件上传的API,但可以通过第三方库如Apache Commons FileUpload来实现。Apache Commons FileUpload是一个专门处理HTTP请求中的多部分数据(包括文件上传)的组件,它使得在Java中处理文件上传变得简单。 首先,你需要将`commons-fileupload`库添加到项目中。可以从Apache官方网站下载最新版本的jar包,例如:http://jakarta.apache.org/commons/fileupload/。将下载的`commons-fileupload-1.0.jar`文件放入应用服务器的`tomcat/webapps/webapp/WEB-INF/lib`目录下,这样服务器就能识别并加载这个库。 接下来,创建一个名为`Upload.java`的Servlet,用于处理文件上传请求。以下是一个简单的Servlet示例: ```java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.commons.fileupload.*; public class Upload extends HttpServlet { private String uploadPath = "C:/upload"; // 上传文件的目标路径 private String tempPath = "C:/uploadtmp"; // 临时文件存储路径 public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { DiskFileUpload fu = new DiskFileUpload(); // 设置最大上传文件大小为4MB fu.setSizeMax(4194304); // 设置临时文件大小阈值为4KB fu.setSizeThreshold(4096); // 设置临时文件存储路径 fu.setRepositoryPath(tempPath); List<FileItem> fileItems = fu.parseRequest(request); Iterator<FileItem> i = fileItems.iterator(); // 遍历所有上传的文件 while (i.hasNext()) { FileItem fi = (FileItem) i.next(); // 判断是否为普通表单字段 if (!fi.isFormField()) { // 获取文件名 String fileName = fi.getName(); // 拼接目标文件完整路径 String filePath = uploadPath + File.separator + fileName; // 将文件保存到目标路径 fi.write(new File(filePath)); } } } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述代码中,`doPost()`方法处理HTTP POST请求,创建`DiskFileUpload`实例以解析请求中的文件项。设置上传文件的最大大小、临时文件大小阈值以及临时文件存储路径。然后,遍历所有文件项,如果是文件(非普通表单字段),则将其保存到指定的`uploadPath`路径下。 对于文件下载,可以创建一个类似的Servlet,读取目标文件并将其写入响应流,以供客户端下载。需要注意设置正确的响应头,如`Content-Type`、`Content-Disposition`等。 Java文件上传和下载的核心在于正确处理HTTP请求中的多部分数据,并有效地读写文件。Apache Commons FileUpload库提供了便利的API,使得开发者能够轻松地实现这些功能。

相关推荐