gpt4 book ai didi

Java文件下载代码设计问题

转载 作者:行者123 更新时间:2023-12-01 17:35:14 25 4
gpt4 key购买 nike

我有一个 Java 项目,用作 Web 应用程序中的组件。该java代码在特定文件夹中写入一个xls文件。我想为此文件提供下载功能,该功能应在文件写入完成后立即触发。问题是——没有服务器环境,如何编写下载功能?

最佳答案

不要写入特定文件夹中的文件。只需立即写入 HTTP 响应正文即可。下载工作应该在 web 应用程序的代码中完成。我假设您正在使用 Servlet。如果您将 HTTP 响应 Content-Disposition header 设置为 attachment,则浏览器将弹出一个另存为对话框。如果您还设置了 Content-Type header ,那么浏览器将了解如何处理它(例如,它将能够询问您想在 Excel 中打开它还是保存?等等)。

response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

// Now write xls to response.getOutputStream() instead of FileOutputStream.

如果该 Java 项目的 API 设计良好,那么您应该有一个如下所示的方法:

public void writeXls(OutputStream output) throws IOException {
// Do your job to write xls to output. E.g. if you were using POI HSSF:
// WritableWorkbook workBook = Workbook.createWorkbook(output);
// ...
}

这样,您就可以在设置上述 header 后在 servlet 中调用它,如下所示::

yourClass.writeXls(response.getOutputStream());

更重要的是,它可以在普通的 Java 应用程序中轻松地重用/测试,如下所示:

yourClass.writeXls(new FileOutputStream("/path/to/foo.xls"));

关于Java文件下载代码设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com