【问题标题】:Storing .pdf files in JavaEE application在 JavaEE 应用程序中存储 .pdf 文件
【发布时间】:2014-07-06 15:42:06
【问题描述】:

我正在开发一个 JavaEE 应用程序(UI:Jsf,DataBase:Mysql,App.server:Glassfish,以及用于生成 pdf 的 iText)。

在页面上,单击“生成”按钮后,将创建一个 pdf 文件。 该文件将保存在某处。 在另一个页面上,用户可以加载这个文件。

解决方案,经过我的搜索: 存储pdf文件的标准解决方案是什么? (速度、安全问题等) 在数据库中(BLOB 类型),还是在文件系统中?

谢谢!

【问题讨论】:

    标签: jakarta-ee file-upload jsf-2 file-io glassfish


    【解决方案1】:

    如果您只需要在用户导航到下一页时存储它,我会使用临时文件或将文件保存在会话中的内存中。

    如果您想更长时间地存储 PDF,最简单的方法是在数据库中使用 BLOB。但是,这可能会导致操作出现问题,因为数据库可能(取决于 PDF 的数量和大小)变得相当大。为避免这种情况,请将其存储在文件系统中。查看https://xadisk.java.net/

    从安全角度来看,使用任何解决方案都不应该有很大的不同。如果有人进入您的磁盘,那么读取您的数据库文件或其他文件并没有太大区别。

    【讨论】:

    • 谢谢!我检查了图书馆,你的建议。
    • 如果您需要将存储、检索和删除操作作为事务的一部分或在事务上合理,那么将 PDF 存储在数据库中是可行的方法。除非您有 JTA 适配器和支持此功能的连接器,否则使用文件系统在事务上是不合理的。这增加了复杂性而没有什么好处。你可以试试上面提到的XADISK。但是,它肯定不如流行的 DB 连接器、驱动程序等广泛使用或测试。
    • 是的,这就是为什么我说将 PDF 存储在数据库中是最简单的方法。但缺点是,一旦数据库变大,备份和恢复需要很长时间。另外,我听说恢复多 GB MySQL 数据库时遇到问题。
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多