3

GrailsのWebアプリにファイルアップロード機能を実装しています。これには、複数のファイル拡張子を許可するように既存のコードを適合させることが含まれます。コードでは、ファイルパスが存在することを確認するためにブール値を実装しましたが、それでもFileNotFoundExceptionが発生します。/hubbub/images/testcommand/photo.gif (No such file or directory)

私のアップロードコードは

def rawUpload = {       
    def mpf = request.getFile("photo")
    if (!mpf?.empty && mpf.size < 200*1024){
        def type = mpf.contentType
        String[] splitType = type.split("/")

        boolean exists= new File("/hubbub/images/${params.userId}")

        if (exists) {
            mpf.transferTo(new File("/hubbub/images/${params.userId}/picture.${splitType[1]}"))
        } else {
            tempFile = new File("/hubbub/images/${params.userId}").mkdir()
            mpf.transferTo(new File("/hubbub/images/${params.userId}/picture.${splitType[1]}"))
        }

    }
}

で例外メッセージが表示されます

if (exists) {
        mpf.transferTo(new File("/hubbub/images/${params.userId}/picture.${splitType[1]}"))
}

では、有効な既存のパスと有効なファイル名および拡張子を単純に照合しているのに、なぜこのエラーが発生するのでしょうか。

4

1 に答える 1

5

Fileオブジェクトを変換Booleanするとファイルの存在が返されるのはなぜだと思いますか?

試す

    File dir = new File("/hubbub/images/${params.userId}")
    if (!dir.exists()) {
        assert dir.mkdirs()
    }
    mpf.transferTo(new File(dir, "picture.${splitType[1]}"))
于 2012-04-01T15:41:49.460 に答える