groovy télécharger le fichier

Je suis en train d'écrire un programme de transfert de fichier et de la vidéo dans graal/groovy.
Donc, chaque fois que l'utilisateur remplit un formulaire de nouveau le contrôleur télécharge le fichier et enregistre le nom de fichier avec d'autres champs dans la base de données. Donc, voici la procédure de sauvegarde:

def save = {
        def streamInstance = new Stream(params)
        if(request){
            MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;
            CommonsMultipartFile uploadedFile = (CommonsMultipartFile)mpr.getFile("myFile");
            if(!uploadedFile.empty){
                println "helloworld"
                println "Class: ${uploadedFile.class}"
                println "Name: ${uploadedFile.name}"
                println "OriginalFileName: ${uploadedFile.originalFilename}"
                println "Size: ${uploadedFile.size}"
                println "ContentType: ${uploadedFile.contentType}"
                /*
                //def webRootDir = servletContext.getRealPath("/")
                //def userDir = new File(webRootDir, "/files/${session.user.login}")
                //userDir.mkdirs()
                uploadedFile.transferTo(new File("/Users/philipperibeiro/ctv/ctv/web-app/files"))
                streamInstance.file = uploadedFile.originalFilename
                */
            }
            else{
                flash.message = "file cannot be empty"
            }
        }
        if(!streamInstance.hasErrors() && streamInstance.save(flush : true)){
            flash.message = "${message(code: 'default.created.message', args : [message(code: 'stream.label', default:'Stream'), streamInstance.id])}"
            redirect(action : "show", id : streamInstance.id)
        }
        else{
            render(view : "create", model : [streamInstance : streamInstance])
        }
    }

J'obtiens cette erreur:
Erreur 500: l'Exécution de l'action [enregistrer] du contrôleur [ctv.StreamController] causé exception: Ne peut pas lancer de l'objet "org.apache.catalina.core.ApplicationHttpRequest@19f46c5d" avec la classe " org.apache.catalina.de base.ApplicationHttpRequest "à la classe" org.springframework.web.multipart.MultipartHttpServletRequest'
Servlet: graal
URI: /ctv/graal/stream/enregistrer.envoi
Message de l'Exception: Ne peut pas lancer de l'objet "org.apache.catalina.core.ApplicationHttpRequest@19f46c5d" avec la classe " org.apache.catalina.de base.ApplicationHttpRequest "à la classe" org.springframework.web.multipart.MultipartHttpServletRequest'
Causés par: Impossible de convertir l'objet 'org.apache.catalina.core.ApplicationHttpRequest@19f46c5d" avec la classe " org.apache.catalina.de base.ApplicationHttpRequest "à la classe" org.springframework.web.multipart.MultipartHttpServletRequest'
Catégorie: StreamController
En Ligne: [22]
Extrait De Code:

quelqu'un pourrait donner un indice de l'oms pour la réparer?

<%@ page import="ctv.Stream" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="main" />
<g:set var="entityName" value="${message(code: 'stream.label', default: 'Stream')}" />
<title><g:message code="default.create.label" args="[entityName]" /></title>
<jqfu:resources tmpl=”false” />
</head>
<body>
<div class="nav">
<span class="menuButton"><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></span>
<span class="menuButton"><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></span>
</div>
<div class="body">
<h1><g:message code="default.create.label" args="[entityName]" /></h1>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${streamInstance}">
<div class="errors">
<g:renderErrors bean="${streamInstance}" as="list" />
</div>
</g:hasErrors>
<g:form action="save" >
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="district"><g:message code="stream.district.label" default="District" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'district', 'errors')}">
<g:select name="district.id" from="${ctv.District.list()}" optionKey="id" value="${streamInstance?.district?.id}"  />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="dateAdded"><g:message code="stream.dateAdded.label" default="Date Added" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'dateAdded', 'errors')}">
<g:datePicker name="dateAdded" precision="day" value="${streamInstance?.dateAdded}"  />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="name"><g:message code="stream.name.label" default="Name" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'name', 'errors')}">
<g:textField name="name" maxlength="30" value="${streamInstance?.name}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="description"><g:message code="stream.description.label" default="Description" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'description', 'errors')}">
<g:textField name="description" maxlength="100" value="${streamInstance?.description}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="media"><g:message code="stream.media.label" default="Media" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'media', 'errors')}">
<g:textField name="media" maxlength="30" value="${streamInstance?.media}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="file"><g:message code="stream.file.label" default="File" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'file', 'errors')}">
<!--g:textField name="file" maxlength="30" value="${streamInstance?.file}" />-->
<g:form action="save"  enctype="multipart/form-data">
<input type="file" name="myFile" />
</g:form>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="logo"><g:message code="stream.logo.label" default="Logo" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'logo', 'errors')}">
<g:textField name="logo" value="${streamInstance?.logo}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="published"><g:message code="stream.published.label" default="Published" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: streamInstance, field: 'published', 'errors')}">
<g:checkBox name="published" value="${streamInstance?.published}" />
</td>
</tr>
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" /></span>
</div>
</g:form>
</div>
</body>
</html>

OriginalL'auteur cybertextron | 2012-03-17