Grails 将视频文件上载到web应用程序时遇到困难

Grails 将视频文件上载到web应用程序时遇到困难,grails,upload,spring-security,Grails,Upload,Spring Security,我使用Grails2.3.8构建了一个web应用,我有一个功能,可以上传视频,以便以后下载。在我们实现spring安全性之前,下载和上传功能都正常工作。实现后,尝试上载视频会出现此错误 No signature of method: org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.getFile() is

我使用Grails2.3.8构建了一个web应用,我有一个功能,可以上传视频,以便以后下载。在我们实现spring安全性之前,下载和上传功能都正常工作。实现后,尝试上载视频会出现此错误

No signature of method: org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [mp4Name] Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getJSON()    
我看了一下这个链接,并尝试了它所说的,但我一直得到相同的错误

这是我的表格代码

<div class="fieldcontain ${hasErrors(bean: videoInstance, field: 'fileName', 'error')} required">
<label for="fileName">
    <g:message code="video.fileName.label" default="Video Name" />
    <span class="required-indicator">*</span>
</label>
<g:textField name="fileName" required="" value="${videoInstance?.fileName}"/>
我已经将
grails.web.disable.multipart
设置为true
我是否缺少一些简单的方法来实现该方法。

您使用的是g:form还是g:uploadForm?
<div class="fieldcontain ${hasErrors(bean: videoInstance, field: 'mp4File', 'error')} required">
<label for="mp4NameT">
    <g:message code="video.videoPath.mp4.label" default="Mp4 Path" />
    <span class="required-indicator">*</span>
</label>
<g:textField name="mp4NameT" required="" value="${videoInstance?.mp4File}" readonly=""/>
<input type="file" id="mp4Name" name="mp4Name">
@Transactional
def save() {

    def videoInstance = new Video()
    bindData(videoInstance, params, [exclude: ['mp4File']])
    videoInstance.properties = params

    if (videoInstance == null) {
        notFound()
        return
    }

    def dest = new File('web-app/videos')
    def destOut = "/videos"
    if(!dest.exists()) dest.mkdirs()
    videoInstance.validate()


    MultipartRequest multipartRequest = request as MultipartRequest

    MultipartFile mp4F= multipartRequest.getFile('mp4Name')
    MultipartFile f4vF= multipartRequest.getFile('f4vName')
    MultipartFile movF= multipartRequest.getFile('movName')
    MultipartFile gpF = multipartRequest.getFile('gpName')
    MultipartFile lightF=multipartRequest.getFile('lightName')


    if (mp4F.empty||f4vF.empty||movF.empty||gpF.empty||lightF.empty) {
        println 'empty'
        flash.message = 'file cannot be empty'
        render(view:'_form')
    }
    else{
        println 'not empty'
        def mp4Namer=params.fileName+'.mp4'
        def f4vNamer=params.fileName+'.f4v'
        def movNamer=params.fileName+'.mov'
        def gpNamer =params.fileName+'.3gp'
        def lightNamer=params.fileName+'_Light.3gp'

        videoInstance.mp4File=''+'web-app/videos/'+mp4Namer
        mp4F.transferTo( new File('web-app/videos/'+mp4Namer))

        videoInstance.f4vFile=''+'web-app/videos/'+f4vNamer
        f4vF.transferTo( new File('web-app/videos/'+f4vNamer))

        videoInstance.movFile=''+'web-app/videos/'+movNamer
        movF.transferTo( new File('web-app/videos/'+movNamer))

        videoInstance.gpFile=''+'web-app/videos/'+gpNamer
        gpF.transferTo( new File('web-app/videos/'+gpNamer))

        videoInstance.lightFile=''+'web-app/videos/'+lightNamer
        lightF.transferTo( new File('web-app/videos/'+lightNamer))


    }
    videoInstance.validate()
    if (videoInstance.hasErrors()) {
        respond videoInstance.errors, view:'create'
        return
    }

    videoInstance.save flush:true

    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.created.message', args: [message(code: 'video.label', default: 'Video'), videoInstance.title])
            redirect videoInstance
        }
        '*' { respond videoInstance, [status: CREATED] }
    }
}