文件上传后Struts2文件复制到不同的文件夹?

时间:2012-12-18 20:42:55

标签: java struts2

我通过struts2文件上传拦截器上传用户个人资料图片。上传图片后,我想将其保存在webapp / upload / images文件夹下的webapp中。我使用以下代码来执行此操作。

public String uploadPhoto() {
    try {
        String filePath = servletRequest.getContextPath() + "/uploads/images";
        System.out.println("Server path:" + filePath);
        File fileToCreate = new File(filePath, this.userImageFileName);

        FileUtils.copyFile(this.userImage, fileToCreate);
    } catch (Exception e) {
        e.printStackTrace();
        addActionError(e.getMessage());

        return INPUT;
    }
    return SUCCESS;
}

但我收到了以下错误

Server path:/picvik/uploads/images
java.io.IOException: Destination '/picvik/uploads/images/one.jpg' directory cannot be created
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:777)
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:731)
    at com.picvik.action.ChangePhotoAction.uploadPhoto(ChangePhotoAction.java:28)

请纠正我的错误。以及如何实现这一目标。我基本上想在我的webapp中保存所有用户个人资料图片:webapp / uploads / images。

1 个答案:

答案 0 :(得分:1)

这很简单,你不能使用相对路径创建文件,你应该使用它的真实路径:

String filePath = servletRequest.getContextPath().getRealPath("/uploads/images");

那应该没问题。