上传后无法获得正确的文件路径

时间:2013-03-12 18:44:15

标签: java url web-applications file-upload struts2

我可以使用struts2框架在我的webapp上传图片,但我无法理解路径。 如何将图像的路径作为URL获取,以便我可以在<img src="url"/>中使用它进行进一步处理。

这是我的动作类源代码,我已经提到了注释中返回的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;
    }
}

2 个答案:

答案 0 :(得分:0)

上传的工件应存储在外部 Web应用程序结构中。

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

答案 1 :(得分:0)

好像您要将文件上传到临时文件夹,您应该做的是将此文件移至您的网络应用程序内的文件夹

你使用request.getServletContext()。getRealPath(YOUR_PATH)来获取移动文件的路径

YOUR_PATH就像“/uploadimage/img.png”=&gt; uploadimage直接作为webapp中的文件夹