【问题标题】:Cannot applicable getFile method to string type无法将 getFile 方法应用于字符串类型
【发布时间】: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 编辑为在我的应用程序中的样子。
  • 我觉得你还需要&lt;form action="/name" method="post" enctype="multipart/form-data"&gt;
  • @smashIT 仍然无法正常工作。
  • 好吧,我是盲人 :d,我没有意识到我有表格,但它在顶部,我只需要添加 enctype="multipart/form-data" 和一切工作正常,谢谢帮助!

标签: html spring grails groovy getfiles


【解决方案1】:

我是盲人:d,这解决了问题:

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多