Web 应用程序管理上传的文档

Web application manage uploaded document

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

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

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

在我的应用程序中,动态创建 "upload" 文件夹并放置此附件。

例如。如果 "upload" 文件夹不存在,则在特定路径中创建新的 "upload" 文件夹并放入此附件,如果 "upload" 文件夹已存在,则将此附件放入此文件夹中。

然而,当我为我的网络应用程序构建时,那个时候这个 "upload" 文件夹被删除并丢失了我所有的附加文件。那么还有其他方法吗,我该如何管理上传的文档?

请指导我。

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

确保您将文件系统数据和数据库保存在 SYNC 中,您可以通过在从文件系统中删除文件之前检查数据库引用是否已删除来做到这一点。

不幸的是,您最终会在文件系统中有一些额外的 UNUSED 文件,这些文件未在数据库中引用,这就是为什么您应该实施 nighty批处理 以收集和删除未引用的文件,因为它们不可用。

编辑:

如果您想访问类似的内容: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();
            }

}

希望对您有所帮助。