Java文件上传下载代码
在Web开发中,文件上传和下载是常见的功能需求。Java语言提供了丰富的API和工具来实现文件上传和下载功能。本文将介绍如何使用Java实现文件上传和下载功能,并提供示例代码供参考。
文件上传
文件上传是指将本地文件通过HTTP协议发送到服务器端。在Java中,可以使用Servlet来处理文件上传的请求。下面是一个简单的文件上传Servlet示例代码:
@WebServlet("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part filePart = request.getPart("file");
InputStream fileContent = filePart.getInputStream();
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
Files.copy(fileContent, Paths.get("C:/uploads/" + fileName));
response.getWriter().print("File uploaded successfully!");
}
}
在上面的示例代码中,@MultipartConfig
注解用于标记Servlet支持文件上传。通过request.getPart("file")
获取上传的文件,然后使用Files.copy()
方法将文件保存到指定的路径。
文件下载
文件下载是指将服务器端的文件发送给客户端。在Java中,可以使用Servlet来处理文件下载的请求。下面是一个简单的文件下载Servlet示例代码:
@WebServlet("/download")
public class FileDownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fileName = request.getParameter("file");
Path filePath = Paths.get("C:/uploads/" + fileName);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
Files.copy(filePath, response.getOutputStream());
}
}
在上面的示例代码中,根据请求参数获取文件名,然后设置响应头Content-Disposition
为attachment
表示文件以附件形式下载。最后通过Files.copy()
方法将文件内容写入响应输出流。
序列图
下面是文件上传和下载的序列图示例:
sequenceDiagram
participant Client
participant Servlet
Client->>Servlet: 发起文件上传请求
Servlet->>Servlet: 处理文件上传
Servlet->>Client: 返回上传成功消息
Client->>Servlet: 发起文件下载请求
Servlet->>Servlet: 处理文件下载
Servlet->>Client: 返回文件内容
总结
通过上面的示例代码和序列图,我们可以看到Java如何实现文件上传和下载功能。在实际项目中,可以根据需求对文件上传和下载的代码进行优化和扩展,例如增加文件大小限制、文件类型校验等功能。希望本文能帮助您更好地理解Java文件上传下载的实现原理,同时为您的项目开发提供参考。