Struts2:如何在webapp外部存储图像并将其路径保存到db?

时间:2012-12-17 14:27:03

标签: java tomcat struts2 java-io

到目前为止,我确实将图像保存到webapp目录及其到数据库的路径中。

但现在我正在尝试将图像保存在webapp之外,这样如果我部署新的war文件,那么我的旧files文件夹将不会被删除。

从我的下面代码我的图像文件正确保存到webapp之外的指定文件夹中,但我不知道如何将该图像检索到我的jsp页面。

我试过这个

<img src="www.myproject.com/struts2project/files/smile.jpg/>"

但这是错误的。我没有让我的图像显示在我的jsp页面中。

下面的代码可以很好地将图像上传到绝对路径,但我的问题是如何检索该图像?

   `fileSystemPath= "/files"; 
         try{                
             File destFile  = new File(fileSystemPath, thempicFileName);
                 FileUtils.copyFile(thempic, destFile);
                 String path=fileSystemPath+"/"+thempicFileName; 
                 theme=dao.getThemeById(themId); 
                 theme.setThemeScreenshot(path);
                 theme.setThemeName(theme.getThemeName());
                 theme.setThemeCaption(theme.getThemeCaption());
                 dao.saveOrUpdateTheme(theme);

         }catch(IOException e){
            e.printStackTrace();
            return INPUT;
         }`

请帮助我...

我希望我能清楚自己需要什么,如果我不是,请告诉我,我会尝试用其他方式解释。

2 个答案:

答案 0 :(得分:1)

正如你所说。 。 。 this question描述了您需要做的事情。我想你需要知道的是如何用struts 2来实现这一目标。这就是正在发生的事情。

在你的标签中:

该网址被路由到您的struts 2应用程序。正确?上下文是“struts2project” 引用问题提供的解决方案之一是使用Tomcat提供静态请求的能力,并配置tomcat以了解保存图像的其他文档根目录。我认为这是一个很好的解决方案。

如果你想将它保留在struts2中,我认为你最好的选择是使用一个专用的“来自其他地方的图像流”动作来获得一个InputStream到图像,然后使用Struts2 {{3}结果类型。该结果类型允许您指定adhoc InputStream。它还可以帮助您设置适当的标题。请注意,该文档页面上的标题值用于下载文件,因此您不需要这些值。我认为,他们会强制浏览器打开图像的另存为对话框。

答案 1 :(得分:0)

您已经在使用绝对路径,只需使用Web应用程序之外的位置:

String destinationDir = "/path/to/my/directory/";
File file = new File(destinationDir + item.getName());