gpt4 book ai didi

servlets - 使用 servlet 从服务器下载 Excel 文件

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

我在服务器端有一个 Excel 文件。如何使用 servlet 在客户端浏览器上显示它?

提前致谢。

最佳答案

重点:只需得到一个 InputStream以某种方式( FileInputStream 合适)并将其写入 OutputStream响应通常 Java IO道路。这基本上就是全部。您只需要注意设置正确的响应 header ,以便浏览器了解如何处理它。 Content-Type header 将指示 webbrowser 它是什么类型的文件,以便浏览器知道使用哪个应用程序打开它。

这是一个启动示例:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = URLDecoder.decode(request.getPathInfo(), "UTF-8");
File file = new File("/path/to/files", filename);

response.setHeader("Content-Type", getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", file.length());
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");

BufferedInputStream input = null;
BufferedOutputStream output = null;

try {
input = new BufferedInputStream(new FileInputStream(file));
output = new BufferedOutputStream(response.getOutputStream());

byte[] buffer = new byte[8192];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
} finally {
if (output != null) try { output.close(); } catch (IOException ignore) {}
if (input != null) try { input.close(); } catch (IOException ignore) {}
}
}

web.xml 中映射此 servlet在 url-pattern 上的 /files/*以便您可以通过 http://example.com/contextname/files/filename.xls 获取 excel 文件.

如果它实际上是 xlsx文件,默认情况下,普通 servletcontainer 还不能识别该文件( ServletContext#getMimeType() 将返回 application/octet-stream 而不是所需的 xlsx 内容类型),那么您需要将以下条目添加到 web.xml还有:
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>

有关文件 servlet 的更高级示例,您可以找到 this article也很有用,它也支持每个下载简历。

关于servlets - 使用 servlet 从服务器下载 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2832715/

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