0

我正在通过 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。

4

1 回答 1

1

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

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

那应该没问题。

于 2012-12-18T22:04:47.900 回答