我正在为Grails中的网络应用实施文件上传功能。这包括调整现有代码以允许多个文件扩展名。在代码中,我实现了一个布尔值来验证文件路径是否存在,但我仍然得到/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]}"))
}
那么,为什么会发生这种错误,因为我只是简单地整理有效的现有路径以及有效的文件名和扩展名?
答案 0 :(得分: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]}"))