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

标签 java spring hibernate spring-mvc

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

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

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

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

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

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

请指导我。

最佳答案

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

确保您将文件系统数据和数据库保持在同步状态,您可以通过在从文件系统中删除文件之前检查数据库引用是否已删除来实现这一点。

不幸的是,您最终会在文件系统中产生一些额外的未使用文件,这些文件未在数据库中引用,这就是为什么您应该实现夜间批处理过程来收集和删除未引用的文件,因为它们不可用。

编辑:

如果您想访问类似的内容:example.com/download/abc.png。您需要创建一个 Controller ,如下所示:

@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();
            }

}

希望有帮助。

关于java - Web应用程序管理上传的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780603/

相关文章:

java - Spring JPA 数据与 REST 日志

java - Infinispan Hibernate 搜索 :org. hibernate.hql.ParsingException: HQLLUCN000003

java - 无法访问 Java Servlet

java - Android Studio : Firestore: RecyclerView not displayed and error

java - 如何测试安全的 Spring Controller

java - Spring Integration EnableIntegrationManagement 加上 MetricRegistry

spring - spring 中的 application-config.xml 与 mvc-config.xml

java - Hibernate - () 之间的限制

java - Spring引导+ hibernate 搜索: entityManagerFactory dependency error

Java 键绑定(bind)的触发非常不一致