java - 在 JSP 中上传和保存文件

标签 java spring hibernate jsp file-upload

我正在尝试使用 Apache Common FileUpload 在 JSP 中上传图像与 Spring /hibernate 。上传图像效果很好。 我的项目文件夹位于以下路径。

E:\Project\SpringHibernet\wagafashionNew\wagafashion

解析请求后,我尝试将上传的图像保存到以下文件夹中。

E:\Project\SpringHibernet\wagafashionNew\wagafashion\web\images

我尝试过各种方法来获得这条道路,但我没有成功。

指定如下所示的相对路径

File f=new File("wagafashion/web/images/image_file.xxx");

不会工作。

有没有办法检索以下路径?

E:\Project\SpringHibernet\wagafashionNew\wagafashion\web\images

或者使用 new File("relative_file_path") 构造函数指定相对路径?

我是否将文件保存到错误的目录中?那么项目文件夹文件要保存在哪个目录中呢?

最佳答案

也许。

一种方法是请求 ServletContext 获取 getRealPath("/web/images"),然后查看它是否返回某些内容——不一定,但它可能会返回。如果是,那么您可以将图像放在那里。

但是。

如果您像大多数使用 WAR 的人一样进行部署,那么所有这些镜像都会在您重新部署后立即消失,因为大多数容器都采用要部署的 WAR 并将其分解到文件系统中。在您执行此操作之前目录中的任何内容(即您上次部署时的代码和工件)都将告别,因此您将“丢失”您的图像。

您可以通过执行目录部署来缓解这种情况,即部署一个已经展开的目录。然后你就知道应用程序的位置(因为你把它放在那里)。然后,您可以在进行更改时将该目录与您的新代码同步(特别是,您可以删除不再需要的旧内容)。

除此之外,不同的容器有不同的机制将外部目录映射到应用程序空间。 Glassfish 具有您可以使用的“替代文档根目录”的概念。这允许您在部署之外有一个地方,静态内容可以存在并仍然由容器提供服务,但在您重新部署时不会被清除。

最后,您始终可以自己做,流式传输您自己的图像等,而无需完全依赖容器。通过这种方式,您可以将图像放在文件系统、数据库、内存等任何地方。

关于java - 在 JSP 中上传和保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942830/

相关文章:

java - 将字符串拆分为标记

java - 将 -javaagent 添加到 Tomcat 6 服务器,我应该将它放在哪里以及采用什么格式?

java - Hibernate 和 JAXB 注释发生冲突

java - 尽管有 @ElementCollection,hibernate (MongoDB) 仍会为字符串列表抛出 InloggingException

java - hibernate ,从集合中删除

java - CordApp Java 堆空间错误和 javax.net.ssl.SSLException

Java:按照另一个列表中对象的顺序迭代一个列表

java - Spring MVC : form : radiobutton for Boolean property

java - 在 Spring Boot 中设置自己的安全性

java - 我可以要求 JDBCTemplate 扩展列表参数以在 in() 子句中使用吗?