Java下载文件导出

在Java开发中,有时候我们需要实现文件的下载导出功能,以便用户可以下载服务器上的文件或导出数据。本文将介绍如何在Java中实现文件下载导出功能,并提供相应的代码示例。

实现文件下载功能

要实现文件下载功能,我们需要使用HttpServletResponse对象将文件流输出到浏览器。下面是一个简单的示例代码:

@GetMapping("/download")
public void downloadFile(HttpServletResponse response) {
    File file = new File("/path/to/file/example.pdf");
    
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
    
    try (FileInputStream fis = new FileInputStream(file);
         BufferedInputStream bis = new BufferedInputStream(fis);
         OutputStream os = response.getOutputStream()) {
         
         byte[] buffer = new byte[1024];
         int bytesRead;
         while ((bytesRead = bis.read(buffer)) != -1) {
             os.write(buffer, 0, bytesRead);
         }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在上面的代码中,我们首先设置响应的Content-Type和Content-Disposition头,然后将文件流写入HttpServletResponse的OutputStream中。

实现数据导出功能

要实现数据的导出功能,可以使用CSVExcel格式将数据以文件形式输出。下面是一个导出CSV文件的示例代码:

@GetMapping("/export")
public void exportData(HttpServletResponse response) {
    List<String> data = Arrays.asList("data1", "data2", "data3");
    
    response.setContentType("text/csv");
    response.setHeader("Content-Disposition", "attachment; filename=data.csv");
    
    try (PrintWriter writer = response.getWriter()) {
        for (String line : data) {
            writer.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在上面的代码中,我们将数据写入PrintWriter中,并通过response.getWriter()获取输出流,将数据输出到浏览器。

序列图

下面是文件下载导出的序列图示例:

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: 发起下载请求
    Server->>Client: 返回文件流

关系图

下面是文件下载导出的关系图示例:

erDiagram
    FILE -- DOWNLOAD
    FILE -- EXPORT

通过本文的介绍,相信你已经学会如何在Java中实现文件下载和数据导出功能。这些功能可以帮助你更好地开发Web应用,提供更好的用户体验。如果你有任何问题或建议,欢迎留言反馈!