【发布时间】:2014-08-11 10:21:01
【问题描述】:
我有一个问题,在 grails 中上传文件。这有点奇怪,因为它在一种方法中起作用,但在另一种方法中不起作用。这是我的代码:
html:
<table>
<tr>
<td>
<g:message code="application.image"/>
</td>
<td class="ImageCheck">
<input type="checkbox" id="ImageCheck" name="ImageCheck" onchange="Show();" />
</td>
</tr>
<tr>
<td class="fileInput_Class" ><input id="inputFile" type="file" name="main" style="display: none" onchange=check(this)'/>
</tr>
<table>
Grails:
def ImageUpload()
{
def f = request.getFile('main')
if(f.fileItem.getSize()!=0)
{
"transferring file to specific location"
}
}
工作和失败的方法代码看起来一样,这是一个堆栈跟踪:
[ERROR] [org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction] - Exception occured invoking flow action: No signature of method: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [main]
Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON()
groovy.lang.MissingMethodException: No signature of method: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [main]
Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON()
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
编辑
这样就解决了问题。
<td class="ImageCheck">
<g:form method="post" enctype"multipart/form-data">
<input type="checkbox" id="ImageCheck" name="ImageCheck" onchange="Show();"/>
<input type="submit" id="submitImage" name="sub" onClick="DoSomething()"/>
</g:form>
</td>
【问题讨论】:
-
看看你是如何定义你的 FORM 标签会很有帮助的。它应该是多部分表单类型。
-
@JoshuaMoore 我将 html 编辑为在我的应用程序中的样子。
-
我觉得你还需要
<form action="/name" method="post" enctype="multipart/form-data"> -
@smashIT 仍然无法正常工作。
-
好吧,我是盲人 :d,我没有意识到我有表格,但它在顶部,我只需要添加 enctype="multipart/form-data" 和一切工作正常,谢谢帮助!
标签: html spring grails groovy getfiles