当我打开Grails应用程序的上传页面时,我不断收到此错误消息:
No signature of method: org.apache.catalina.core.ApplicationHttpRequest.getFile()
is applicable for argument types: (java.lang.String) values: [file]
Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String),
getAt(java.lang.String), getLocale(), getInfo()
这是我的html代码:
<html>
<head>
<meta name="layout" content="main"/>
<title></title>
<style type="text/css">
label{
float:left;
width:65px;
}
</style>
</head>
<body>
<g:uploadForm action="upload">
<input type="file" name="file">
<g:submitButton name="upload" value="Upload"/>
</g:uploadForm>
</body>
</html>
和对应的 Controller 类
package org.example.test
class AdminAccessController {
def upload() {
def f = request.getFile('file')
def allLines= f.inputStream.toCsvReader().readAll()
}
}
我尝试导入大量的各种库来解决此问题,但是我还没有弄清楚发生了什么。如您所知,我最终将把这个文件写到csv阅读器中。我在Grails的官方GitHub上完全遵循了该文档:http://grails.github.io/grails-doc/latest/guide/theWebLayer.html#uploadingFiles,但似乎没有任何效果。
谁能帮我吗?
谢谢。
最佳答案
到达您的 Controller 的request
实例是没有ApplicationHttpRequest
方法的getFile
。
您需要将请求的类型更改为DefaultMultipartHttpServletRequest
。
可以通过将enctype
中的uploadForm
更改为multipart/form-data
来完成,如下所示:
<g:uploadForm action="upload" enctype='multipart/form-data'>
<input type="file" name="file">
<g:submitButton name="upload" value="Upload"/>
</g:uploadForm>
关于html - Grails没有方法签名:org.apache.catalina.core.ApplicationHttpRequest.getFile(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31279262/