4

我有一个用户表单,其中允许用户上传图像..我将这些图像存储在 tomcat 服务器中,并将图像名称存储在数据库中以检索特定用户的图像。

我用于存储图像的代码如下..

String filePath = getServlet().getServletContext().getRealPath("/") +"Images";
File folder = new File(filePath);
if(!folder.exists()){
 folder.mkdir();
 }
 String fileName = userForm.getUploadedFile().getFileName();
 System.out.println("Server path:" +filePath);
File newFile = new File(filePath, fileName);
                                              FileOutputStream fos = new FileOutputStream(newFile);
 fos.write(userForm.getUploadedFile().getFileData());
fos.flush();
fos.close();

现在我想在登录后在用户的个人资料页面中显示存储的图像..

我在个人资料页面做了这样的事情..

<img src="http://localhost:8082/Images/${sessionUser.image}"/> 

但是我的图像没有显示出来..

请有人指导..

4

2 回答 2

2

当我们试图访问 webapp 容器之外的文件(图像、视频、pdf 等)时,我们需要创建一个从服务器到该文件夹​​的链接。这可以使用Context元素的 'docBase''path'属性来完成。有几种方法可以做到这一点(有关 Tomcat 文档中所述的所有方法,请参阅此链接)我发现最简单的方法是将以下代码放在Tomcat 服务器的/apache-tomcat-8.0.36/conf/server.xml文件中Host标签下.

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
---------
---------
<Context docBase="/path/of/your/external/folder" path="/your_webapp_name/your/url"/>
---------
---------
</Host>

现在您可以在视图页面中轻松访问外部文件夹中的文件,如下所示(假设 /path/of/your/external/folder 中有一个名为 IMAGE.jpeg 的图像):

<img src="/your_webapp_name/your/url/IMAGE.jpeg" />

注意:-注意您是使用 eclipse 配置的 tomcat 服务器还是从终端使用 tomcat。在任何一种情况下,对适当的 server.xml 文件进行更改,即,如果您使用 eclipse 配置的 tomcat 服务器server.xml,则对 eclipse 的 Servers 目录内的文件进行更改,而不是在其安装的主目录中进行更改。

于 2016-12-18T14:23:11.893 回答
0

您的 Web 应用程序在上下文 /NewStrutsOBL‌ 下运行,并且您放置的链接用于根上下文 /。

你应该要么

更改链接以使用上下文路径

<img src="${pageContext.request.contextPath}/Images/${sessionUser.image}"/>

或将上下文放在链接中(不是一个好方法,但可以工作)

<img src="http://localhost:8082/NewStrutsOBL‌/Images/${sessionUser.image}"/>

或在链接中使用相对路径,例如您的页面文件是否与图像位于同一目录下(根据需要可能好或不好):

<img src="Images/${sessionUser.image}"/>

作为旁注,您还可以将上下文路径从 /NewStrutsOBL‌ 更改为 / (从 Eclipse 运行时更简单的方式),但这与问题无关,通常依赖特定上下文根是一种不好的做法在您的链接或代码中。

作为另一个不相关的旁注,在大型企业应用程序中,您通常不会修改正在运行的应用程序的 Web 应用程序内容,而是使用外部文件夹或数据库。但是对于个人或测试应用程序来说很好。

于 2016-12-18T14:41:27.197 回答