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-Dispositionattachment表示文件以附件形式下载。最后通过Files.copy()方法将文件内容写入响应输出流。

序列图

下面是文件上传和下载的序列图示例:

sequenceDiagram
    participant Client
    participant Servlet
    Client->>Servlet: 发起文件上传请求
    Servlet->>Servlet: 处理文件上传
    Servlet->>Client: 返回上传成功消息
    Client->>Servlet: 发起文件下载请求
    Servlet->>Servlet: 处理文件下载
    Servlet->>Client: 返回文件内容

总结

通过上面的示例代码和序列图,我们可以看到Java如何实现文件上传和下载功能。在实际项目中,可以根据需求对文件上传和下载的代码进行优化和扩展,例如增加文件大小限制、文件类型校验等功能。希望本文能帮助您更好地理解Java文件上传下载的实现原理,同时为您的项目开发提供参考。