-1

您好我正在尝试在我的应用程序中实现文件上传,其中上传的文件被解析并使用该信息在数据库中创建一个条目。

 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

那么为什么我会收到错误消息?

4

2 回答 2

1

您可以直接调用另一个函数而不是重定向吗?重定向将使用文件作为参数发出一个 http 重定向,而无需。

if(type[1] == "properties") {
  parsePropertyFile(file)
}

进而:

private def parsePropertyFile(def file) {
  String filename = file.getOriginalFilename();
  ...
}
于 2012-09-06T19:58:16.130 回答
0

在您的parsePropertyFile操作中,您没有获得 File 对象,而是从params. 就像在你的save行动中一样,你需要做

def f = request.getFile('file')
println f.getOriginalFilename()
于 2012-09-06T19:59:05.333 回答