2013-03-12 86 views
-1

我能够上传我的web应用程序与struts2框架中的图片,但我无法理解路径。 如何获取图像的路径作为URL,以便我可以使用它在<img src="url"/>中进一步处理。上传后无法获取正确的文件路径

这是我的动作类源代码,我提到了评论中返回的URL,但是URL对我没有任何意义。我如何解密到实际的网址?

public class AddItemAction extends ActionSupport implements 
     ServletContextAware { 

    @Override 
    public void setServletContext(ServletContext arg0) { 
     // TODO Auto-generated method stub 

    } 

    File pic; 
    String picContentType; 
    String picFileName; 

    public File getPic() { 
     return pic; 
    } 

    public void setPic(File pic) { 
     this.pic = pic; 
    } 

    public String getPicContentType() { 
     return picContentType; 
    } 

    void setPicContentType(String picContentType) { 
     System.out.println("Setting conteent tuype" + picContentType); 
     this.picContentType = picContentType; 
    } 

    public void setPicFileName(String picFileName) { 
     this.picFileName = picFileName; 
    } 

    public String getPicFileName() { 
     return picFileName; 
    } 

    public String execute() { 
     File file = getPic(); 
     String strFinalFullPathFileName = file.getAbsolutePath() + File.separator + picFileName; 
     System.out.println(strFinalFullPathFileName); 

     // This is the path returned 
     /* 
     * /Users/..../Catalina/localhost/.../upload_584d2719_13d5fdf593d__8000_00000000.tmp/IMG_20120526_083438.jpg 
     * 
     * 
     */ 

     return SUCCESS; 
    } 
} 
+1

创建其获取图像的操作和使用,作为URL的路径。 – Quaternion 2013-03-12 18:46:06

+0

@Quaternion你的意思是getPic();但是当我尝试执行getPic()。getPath()时,它给了我os文件路径,即/ Users/... – 2013-03-12 18:48:08

+0

不要在注释中提及实际的URL,请更新问题。 – 2013-03-12 18:52:51

回答

0

上传工件应该被存储该网络应用程序的结构。

另外,默认情况下,文件上传拦截器会删除上传过程中创建的临时文件。这应该被关闭,或者应该将文件复制到已知位置,以便它们可以(a)通过动作流回,或者(b)如果您设置了容器以提供静态资产正常的网页结构。

+0

我们如何关闭它?我们能做到吗? – 2013-03-12 18:56:45

+0

@ArunAbraham不会不定制上传拦截器;我认为我们已经为此添加了开关,但我想我们没有。 – 2013-03-12 19:18:14

+0

现在才意识到它。尚未解决问题,但想法是它只是暂时存储。 – 2013-03-12 20:43:36

0

好像你是上传文件到临时文件夹,你应该做的是这个文件移动到文件夹您的Web应用程序内

你使用的情况下request.getServletContext()。getRealPath(YOUR_PATH)获得其中,直接移动文件

YOUR_PATH是像“/uploadimage/img.png” => uploadimage是一个文件夹中,你的web应用

+0

然后使用的URL是YOUR_CONTEXT_PATH_IF_ANY +“/uploadimage/img.png” – 2013-03-12 18:55:39

+0

将上传的工件*放入* web应用程序结构中几乎不是一个好主意。事实上,如果你正在部署一个战争文件(最常见的情况),你*不能*移动的东西到Web应用程序。 – 2013-03-12 18:56:20

相关问题