2012-12-12 45 views
0

我必须创建(不上传!),存储并能够使用Play 2.0应用程序下载PDF文件。我如何在Play中做到这一点?我正在考虑将文件存储为MySQL数据库中的blob,但在这种情况下是否有机会在不使用文件系统的情况下创建PDF文件?第二个问题是如何实现文件下载?PlayFramework 2.0文件存储

回答

2

在很普遍的情况下,将文件存储在数据库中通常比较昂贵并且存在一些缺点。 (查看原因:Storing Images in DB - Yea or Nay?

另一方面,它也取决于文件是否应该受到保护,或者它们是某种公共文档。

解决方案有两种考虑:

  1. ,如果你不担心安全问题,你可以创建文件,并保存在某个文件夹,不是,你可以使用一些HTTP服务器服务,并在你的数据库只保留路径。这是个好主意,特别是通常服务器只是为了提供文件而创建的,所以你不需要重新发明轮子。
  2. 如果文件受到限制,还将它们存储在文件系统中,无论如何都放在某个非公用文件夹中,那么您可以使用如此简单的一段代码返回File作为操作的Result,仅限于经过身份验证/授权的访问者)

    public static Result serveFile(String absouteFilePath){ 
        //some authorization... 
        return ok(new File(absouteFilePath)); 
    } 
    
+0

在文件系统及其数据库的元数据存储文件解决。谢谢! – Jolene