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/uploads/images の下の webapp 内にすべてのユーザーのプロフィール写真を保存したいと考えています。

4

1 に答える 1

1

非常に簡単です。相対パスを使用してファイルを作成することはできません。実際のパスを使用する必要があります。

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

それなら大丈夫なはずです。

于 2012-12-18T22:04:47.900 に答える