Tomcat 从数据库中打开Xlsx

Tomcat 从数据库中打开Xlsx,tomcat,jakarta-ee,browser,blob,xlsx,Tomcat,Jakarta Ee,Browser,Blob,Xlsx,我试图打开一个xlsx文件,该文件实际上作为Blob存储在数据库中。因此,该过程分为三个步骤: 第一:从数据库获取文件 第二:保存在服务器上 第三:打开它 我试着像这样使用outputstream: InputStream in = blob.getBinaryStream(); OutputStream out = new FileOutputStream("c:/mytemp/testanar.xlsx"); byte[] buff = blob.getBytes(1,(int)blo

我试图打开一个xlsx文件,该文件实际上作为Blob存储在数据库中。因此,该过程分为三个步骤:

第一:从数据库获取文件

第二:保存在服务器上

第三:打开它

我试着像这样使用outputstream

 InputStream in = blob.getBinaryStream();
 OutputStream out = new FileOutputStream("c:/mytemp/testanar.xlsx");
 byte[] buff = blob.getBytes(1,(int)blob.length());
 out.write(buff);
 out.close();
但是我找不到任何问题来使用这个URL方法


我的问题是如何将文件保存到服务器上?

我找到了解决问题的方法。我的问题是找到一种在web应用程序中使用浏览器打开excel文件的方法。 以下是分两个步骤的解决方案:

第一步:

安装一个扩展名,帮助您读取我使用的excel文件

第二步:

创建一个servlet,帮助您读取文件。这里是我的一部分:

public String downloadDocument(@PathVariable int docId, HttpServletResponse response) throws IOException {
    Rapport document = rapportService.findRapportById(docId);

    response.setContentType(document.getType());
    response.setContentLength(document.getContent().length);
    // if you want to download the file instead of reading the same file 
    // remove "//" below
    //response.setHeader("Content-Disposition", "attachment; filename=\"" + document.getName() + "\"");
    FileCopyUtils.copy(document.getContent(), response.getOutputStream());

    return "redirect:listofreports";
}
[编辑]: 其中,融洽关系是表示excel文件的模型


祝你好运。

但是我找不到在URL中使用这种方法的任何问题:你这是什么意思?您的代码虽然有缺陷,但已经将文件保存在服务器上了,不是吗?要使其正确且更简单,请使用。你应该向我们解释你想要实现什么,因为我觉得这不是你应该做的。解释功能是关于什么的,就好像我是你的应用程序的用户一样。好的。起初我试图从数据库中读取文件。应用程序的用户不知道数据库是什么。再努力一点。类似于:单击此处,然后……好的,我们有一个视图,显示存储在数据库中的所有文档的列表。对于每个文档,我们可以在浏览器上阅读文档或下载文件。啊。因此,您不需要将excel文件存储在服务器上的文件夹中。它已经在数据库里了,所以没用。在响应上设置适当的内容类型后,只需将blob中存储的所有字节写入HttpServletResponse OutputStream。通过谷歌搜索“使用servlet下载excel文件”会给您很多提示。