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



我需要在服务器端的应用程序上存储用户的个人资料pic。我通过JSF(使用Primefaces)将其存储在文件系统中。但是,文档当前存储在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>

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

-Dfiles.location=/path/to/files

然后您可以通过以下命令找到文件:

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

或者,您可以将其存储在DB中,但是将二进制数据存储在DB中通常不被允许,因为它不可索引/可搜索/可链接,因此违背了存储在DB中的唯一目的。

参见:

  • 使用从webapps/webcontext/deploy文件夹外部加载图像或& lt; img>标记

最新更新