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

基于Java的web应用程序的文件存储,java,spring,upload,document,Java,Spring,Upload,Document,我正在设计一个基于Java的web应用程序(具体来说是基于Spring的)。关键要求之一是,此应用程序必须接受用户上传的多种格式(pdf、jpeg、dwg、png等)的文件。此外,能够下载回用户的本地计算机。将有数千个文件被上传/下载 我想到两种方法: 将文档上载到运行服务器的同一个框中。大多数情况下,所有文档都将上传到运行Tomcat的box中并从中下载。我担心,随着文档数量的增加,这可能会影响总体性能 将文档上载/下载到另一台专用于存储/检索文档的服务器 若采用第二种方法,Spring应用程

我正在设计一个基于Java的web应用程序(具体来说是基于Spring的)。关键要求之一是,此应用程序必须接受用户上传的多种格式(pdf、jpeg、dwg、png等)的文件。此外,能够下载回用户的本地计算机。将有数千个文件被上传/下载

我想到两种方法:


  • 将文档上载到运行服务器的同一个框中。大多数情况下,所有文档都将上传到运行Tomcat的box中并从中下载。我担心,随着文档数量的增加,这可能会影响总体性能

  • 将文档上载/下载到另一台专用于存储/检索文档的服务器

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

    或者你能建议其他处理这个需求的最佳方式吗

    提前谢谢。
    Ganesh

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


    。你应该去看看。无论您选择S3还是其他什么,方法都是相似的。

    您是否考虑过使用DB。您可以将这些文件存储为blob。以下是有关此的教程:

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

    关于您考虑的两种方法:


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

    我建议您使用JCR,如ApacheSling或ApacheJackrabbit

    阿帕奇吊索™ 是基于可扩展内容树的RESTful web应用程序框架,具有以下特点:

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

    “我担心,随着文档数量的增加,这可能会影响整体性能。”