您好我正在尝试在我的应用程序中实现文件上传,其中解析上传的文件并使用该信息在数据库中创建条目。
def save = {
def file = request.getFile("file");
def filename = file.getOriginalFilename();
def type = filename.split('\\.');
if(!file.isEmpty()){
if(type[1] == "properties"){
redirect(action:"parsePropertyFile", params:params);
}
}
}
def parsePropertyFile = {
println "\n"
println params.file;
println "\n";
def f = params.file;
println f;
def filename = f.getOriginalFilename();
println filename;
}
当我打印出f
时输出:
org.springframework.web.multipart.commons.CommonsMultipartFile@29d32df9
但是当我尝试在getOriginalFilename()
上致电f
时,我收到以下错误:
groovy.lang.MissingMethodException: No signature of method:
java.lang.String.getOriginalFilename() is applicable for argument types: () values: []
我还从保存功能打印出file
,其输出也是:
org.springframework.web.multipart.commons.CommonsMultipartFile@29d32df9
那我为什么会收到错误?
答案 0 :(得分:1)
您可以只调用另一个功能,而不是重定向吗?重定向将发出一个http重定向,该文件作为param而不需要。
if(type[1] == "properties") {
parsePropertyFile(file)
}
然后:
private def parsePropertyFile(def file) {
String filename = file.getOriginalFilename();
...
}
答案 1 :(得分:0)
在您的parsePropertyFile
操作中,您没有获得File对象,而是从params
获取字符串。就像在save
操作中一样,您需要执行
def f = request.getFile('file')
println f.getOriginalFilename()