如何永久存储用户的文档服务器端?

时间:2011-11-15 20:18:23

标签: java jsf

我需要在服务器端的应用程序上存储用户的个人资料照片。我通过JSF(使用Primefaces)将它存储在fileSystem中。但是,文档当前存储在tmp文件夹中,但在每次重新启动服务器后都会被删除。

我应该如何存储需要永久保存的文件?


我一直在通过web.xml提供目录路径,如下所示: 我只需要将路径更改为服务器上的永久位置吗?

(我正在使用Primefaces uploadFile组件来方便上传)

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/tmp</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

1 个答案:

答案 0 :(得分:1)

将其存储在永久位置而不是临时位置。为准备好的文件夹提供绝对磁盘文件系统路径,该文件夹具有足够的Java读/写权限。如有必要,您可以将路径配置为系统属性或属性文件。例如。 作为系统属性(您指定为VM参数):

-Dfiles.location=/path/to/files

然后您可以通过以下方式找到该文件:

File file = new File(System.getProperty("files.location"), filename);
// ...

或者,您可以将其存储在数据库中,但是将二进制数据存储在数据库中通常是不可取的,因为它不可索引/可搜索/可链接,因此无法存储在数据库中。

另见: