如何从Servlet3SecurityContextHolderAwareRequestWrapper中获取MultipartRequest

Dav*_*ein 7 upload grails spring-security

我正在使用Grails 2.4.3并且我有一个<g:uploadForm>with方法设置发布,但我没有在我的控制器动作中获得MutlipartRequest.相反,我得到的Servlet3SecurityContextHolderAwareRequestWrapper没有getFile()方法.我已经尝试过投射,我已经尝试从包装器中取出请求request.request,并且我已经尝试了一些其他我已经看到建议给其他类似问题的人,但仍然没有骰子.我确定我错过了一些简单的事情.我倾向于这样做,但如果有人能指出我正确的方向,我会非常感激.

这是我的表格:

  <g:uploadForm method="POST" action="uploadSupplemental" >
    <div class="modal-header">
      <h3 class="modal-title" id="myModalLabel">Upload Supplemental Data File</h3>
    </div>
    <div class="modal-body">
      <label for="fileInput">Choose file to upload:</label>
      <input type="file" id="fileInput" name="supplementalData" />
    </div>
    <div class="modal-footer">
      <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
      <input type="submit" class="btn btn-primary" />
    </div>
  </g:uploadForm>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器动作:

  def uploadSupplemental() {
    MultipartRequest multipartRequest =  request as MultipartRequest
    def file = multipartRequest.getFile('supplementalData')
    if (file){
      flash.message = "File found!!"
    } else {
      flash.message = "File NOT found.  :-( "
    }
    redirect action:'list'
  }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

URI/app/upload/uploadSupplemental类groovy.lang.MissingMethodException消息没有方法签名:org.springframework.security.web.servletapi.HttpServlet3RequestFactory $ Servlet3SecurityContextHolderAwareRequestWrapper.getFile()适用于参数类型:(java.lang.String)values :[supplementalData]可能的解决方案:getXML(),getPart(java.lang.String),getAt(java.lang.String),getAt(java.lang.String),getLocale(),getJSON()

dma*_*tro 2

必须设置以下配置属性才能true启用Config.groovy多部分请求。

grails.web.disable.multipart=true
Run Code Online (Sandbox Code Playgroud)

这是一个相关的 JIRA 问题和SO 中报告相同异常的重复问题。

还要确保@Secured在上传操作之前对用户进行身份验证(使用 )。