Java Web应用程序管理上载的文档

Java Web应用程序管理上载的文档,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我正在制作文件附加web应用程序 我的问题: 当我附加文件上传点击附加按钮,所以我不知道我把这个附加文件放在哪里 我正在谷歌上寻找这个问题的答案。所以我找到了两种方法,要么使用文件系统,要么在数据库中保存附加文件。我使用文件系统的方式 在我的应用程序中,动态创建“上载”文件夹并放置此附加文件 例如,如果“上载”文件夹不存在,则在特定路径中创建新的“上载”文件夹,并放置此附加文件,如果“上载”文件夹已存在,则将此附加文件放置在此文件夹中 然而,当我为我的web应用程序进行构建时,这个“上载”文件夹

我正在制作文件附加web应用程序

我的问题: 当我附加文件上传点击附加按钮,所以我不知道我把这个附加文件放在哪里

我正在谷歌上寻找这个问题的答案。所以我找到了两种方法,要么使用文件系统,要么在数据库中保存附加文件。我使用文件系统的方式

在我的应用程序中,动态创建“上载”文件夹并放置此附加文件

例如,如果“上载”文件夹不存在,则在特定路径中创建新的“上载”文件夹,并放置此附加文件,如果“上载”文件夹已存在,则将此附加文件放置在此文件夹中

然而,当我为我的web应用程序进行构建时,这个“上载”文件夹变成了“删除”,并丢失了我的所有附加文件。那么,还有其他方法,我如何管理上传的文档


请指导我。

将数据存储到文件系统并不意味着您必须使用项目目录, 将数据存储在计算机中,例如
C:/storedFile
,以便在构建web应用程序后保留数据

确保文件系统数据和数据库保持同步,可以在从文件系统中删除文件之前检查数据库引用是否已删除

不幸的是,文件系统中会有一些额外的未使用的文件在数据库中没有被引用,这就是为什么您应该实施夜间批处理来收集和删除未被引用的文件,因为它们不可用

编辑: 如果您想访问类似的内容:
example.com/download/abc.png
。您需要创建一个具有以下内容的控制器:

@RequestMapping(value="/download/{imageUrl:.+}")
public void getImageByUrl(@PathVariable String imageUrl, 
HttpServletResponse response) throws IOException 
{
    /*
     * Getting The Content From The Images Folder in The Storage Directory
     * Creating an Input Stream and Passing it to The View
     */
    String filesFolder = /* Here goes you storage Folder */;
    File someImage= new File(filesFolder+"/"+imageUrl);
    FileInputStream fileStream=new FileInputStream(someImage);       

            try {
                response.getOutputStream().write(IOUtils.toByteArray(fileStream));
                response.getOutputStream().flush();
                response.getOutputStream().close();
            } catch (IOException e) {
                e.printStackTrace();
            }

}

希望有帮助。

如果我在
*C*
驱动器中创建文件夹,那么从应用程序下载时将无法工作。所以我必须在web应用程序中创建它,它可以通过web应用程序访问。不是吗?不,创建一个.properties文件,在其中存储存储路径。例如,当你想下载一个图像时,很明显,你可能从数据库中获得了它的名称,并且你已经从属性文件中获得了路径,所以没有任何东西阻止你正常下载文件。我的意思是,如果我想将用户重定向到abc.png图像,那么我现在要做的是。。。。。如果我将附件移动到c驱动器,我将无法像这样访问它