gpt4 book ai didi

java - Spring MVC 上传文件,然后提供下载链接

转载 作者:行者123 更新时间:2023-11-28 22:53:51 25 4
gpt4 key购买 nike

我在 Tomcat 上运行了 Spring MVC 网络应用程序。

我上传一个文件并将其保存在文件系统的/tmp 文件夹中。

然后我需要在 View (Thymeleaf) 中显示指向该文件的链接,以便用户可以通过单击该链接来下载该文件。如何做到这一点?

我听说过配置 Tomcat 以允许特定上下文链接到 FS 上的文件夹,但不确定该怎么做,或者这是否是唯一的解决方案。请帮忙。

最佳答案

我处理这个问题的方式略有不同。基本上我使用两个 Controller 操作来处理文件上传,一个用于上传,一个用于下载(查看)文件。

所以上传操作会将文件保存到文件系统上的某个预先配置的目录中,我假设您已经使该部分正常工作。

然后声明类似这样的下载 Action

@Controller
public class FileController {
@RequestMapping("/get-file/{filename}")
public void getFileAction(@RequestParam filename, HttpServletResponse response) {
// Here check if file with given name exists in preconfigured upload folder
// If it does, write it to response's output stream and set correct response headers
// If it doesn't return 404 status code
}
}

如果你想让仅仅知道文件名就无法下载文件,上传文件后,将一些元信息保存到数据库(或任何其他存储)并为其分配一些哈希(随机 ID)。然后,在 getFileAction 中,使用此散列查找文件,而不是原始文件名。

最后,我不鼓励使用 /tmp 进行文件上传。这取决于所使用的系统/应用程序,但顾名思义,临时目录通常用于临时数据。通常保证临时目录中的数据会保留“合理时间”,但应用程序必须考虑到临时目录中的内容可以随时删除。

关于java - Spring MVC 上传文件,然后提供下载链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32541136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com