基于Java的Web应用程序的文件存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Java的Web应用程序的文件存储相关的知识,希望对你有一定的参考价值。

我正在处理设计基于Java的Web应用程序(基于Spring的具体)。其中一个关键要求是,该应用程序必须接受用户上传的各种格式(pdf,jpeg,dwg,png等)的许多文件。此外,还能够下载回用户的本地计算机。将上传/下载数千个文件。

我在考虑两种方法:

  1. 将文档上载到运行服务器的同一个框中。大多数文档都将上传到Tomcat运行的框中并从其中下载。我担心,随着文档数量的增加,这可能会影响整体性能。
  2. 将文档上载/下载到另一个专用于存储/检索文档的服务器。

如果采用第二种方法,Spring应用程序如何向/从远程服务器上传/下载文件?或者在类似的应用程序中使用哪种方法。

或者你能否建议任何其他最佳方式来处理这个要求。

提前致谢。 Ganesh神

答案

许多像这样构建的现代应用程序将使用像Amazon S3这样的外部存储系统来存储这些文件,从而为您提供各种不错的功能 - 高可用性下载,有效无限的磁盘空间池,数据复制等等。

There's a tutorial available for integrating spring with Amazon S3。你应该检查一下。无论您选择S3还是其他东西,方法都是类似的。

另一答案

你有没有想过使用DB。您可以将这些文件存储为BLOB。这是一个教程:link

“本教程将引导您完成构建一个有趣的Spring MVC Web应用程序的步骤,该应用程序允许用户将文件从她的计算机上传到服务器。这些文件使用Hibernate存储在数据库中。”

至于你考虑的两种方法:

无论哪种方式,您都必须管理这些文件,备份它们并检查是否有足够的空间来存储更多文件。当您接受所有文件时,这可能会导致一些安全问题。

另一答案

我建议你使用像Apache Sling或Apache Jackrabbit这样的JCR。

Apache Sling™是基于可扩展内容树的RESTful Web应用程序框架,具有以下功能:

  • 将请求URL映射到内容存储库中的内容节点的内容解析
  • 将内容节点和请求方法映射到处理请求的Servlet的Servlet解析
  • 支持WebDAV的默认servlet,从Web表单创建内容和JSON表示
  • 一个javascript客户端库,允许通过AJAX访问内容存储库
  • 使用Javascript,JSP,Ruby,Velocity和Scala支持服务器端脚本
  • 基于OSGi的Apache Felix可扩展性--Felix Web控制台最初是由Apache Sling项目开发的

以上是关于基于Java的Web应用程序的文件存储的主要内容,如果未能解决你的问题,请参考以下文章

从基于 Java 的 azure Web 应用程序读取本地文件共享

转载JAVA秒会技术之图片上传基于Nginx及FastDFS,完成图片的上传及展示

在 Java Web 应用程序 (WAR) 中存储配置文件的最佳位置是啥?

Tomcat启动过程原理详解

java实现一个简单的Web服务器

需要帮助来存储来自Java Web应用程序的许多文档