Web应用程序管理上传文档

时间:2015-01-05 13:29:53

标签: java spring hibernate spring-mvc

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

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

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

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

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

然而,当我为我的Web应用程序进行构建时,此时“上传”文件夹变为删除并丢失了我的所有附件文件。所以任何其他方式,我如何管理上传的文件?

请指导我。

1 个答案:

答案 0 :(得分:1)

将数据存储到文件系统并不意味着您必须使用项目目录, 将数据存储在计算机中,例如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();
            }

}

希望它有所帮助。