2015-09-30 6 views
-1

Я пытался представить форму, содержащую несколько входов (тексты и одно изображение), но я не смог получить изображение из запроса (Grails 3.0.4)Grails request.getFile всегда возвращаются нуль

Моя create.gsp выглядит следующим образом:

<g:uploadForm controller="advertisement" action="save"> 

    <input name="name" type="text" id="advertisement_name" /> 

    <input name="link" type="text" id="advertisement_url" /> 

    <input id="add_banner_image" name="myimage" type="file" accept="image/png,image/jpeg" data-max-size="512000"/> 

    <g:submitButton name="save" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" value="Salvar anúncio"> 
    </g:submitButton> 

</g:uploadForm> 

Мой браузер показывает правильный запрос полезной нагрузки:

------WebKitFormBoundarysaAgHUi2q9vTfkkY 
Content-Disposition: form-data; name="name" 

Filipe 
------WebKitFormBoundarysaAgHUi2q9vTfkkY 
Content-Disposition: form-data; name="link" 

https://www.filipescosta.com 
------WebKitFormBoundarysaAgHUi2q9vTfkkY 
Content-Disposition: form-data; name="imagemlouca"; filename="exemplo.jpeg" 
Content-Type: image/jpeg 


------WebKitFormBoundarysaAgHUi2q9vTfkkY 
Content-Disposition: form-data; name="save" 

Salvar anúncio 

Мой resources.groovy выглядит следующим образом:

beans = { 
    multipartResolver (org.springframework.web.multipart.commons.CommonsMultipartResolver) { 
     maxUploadSize=2500000 
    } 
} 

И мой application.yml выглядит следующим образом:

grails: 
mime: 
    disable: 
     accept: 
      header: 
       userAgents: 
        - Gecko 
        - WebKit 
        - Presto 
        - Trident 
    types: 
     all: '*/*' 
     atom: application/atom+xml 
     css: text/css 
     csv: text/csv 
     form: application/x-www-form-urlencoded 
     html: 
      - text/html 
      - application/xhtml+xml 
     js: text/javascript 
     json: 
      - application/json 
      - text/json 
     multipartForm: multipart/form-data 
     pdf: application/pdf 
     rss: application/rss+xml 
     text: text/plain 
     hal: 
      - application/hal+json 
      - application/hal+xml 
     xml: 
      - text/xml 
      - application/xml 
urlmapping: 
    cache: 
     maxsize: 1000 
controllers: 
    defaultScope: singleton 
converters: 
    encoding: UTF-8 
views: 
    default: 
     codec: html 
    gsp: 
     encoding: UTF-8 
     htmlcodec: xml 
     codecs: 
      expression: html 
      scriptlets: html 
      taglib: none 
      staticparts: none 

Мой контроллер выглядит следующим образом:

def save() { 
    println request.getFile('myimage') 
    println "Request class: ${request.class}" 
    [...] 

    request.withFormat { 
     form multipartForm { 
      flash.message = message(code: 'default.created.message', args: [message(code: 'advertisement.label', default: 'Advertisement'), advertisement.id]) 
      redirect(uri:'/') 
     } 
     '*' { respond advertisement, [status: CREATED, formats:['html']] } 
    } 
} 

Но в приставках, Println сообщение:

null 
Request class: class org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest 

Может ли кто-нибудь взглянуть и помочь мне с некоторым трюком? Я искал примеры, и я не мог найти ничего, что помогло бы.

ответ

1

Вы определяете: имя атрибута = "myimage" и попытаться получить с заглавным именем -> request.getFile ('myImage')

+0

О, это ошибка копирования/вставки. Я не пропустил это в своем коде, но я понял, что здесь происходит. –

0

Ну, я понял, что происходит.

Я пытался создать новый объект со строковым типом, но я отправлял тип входного файла в качестве параметра. Затем, пытаясь установить тип ввода String в тип файла, код сломался, и я не смог распечатать значение request.getFile.

Смежные вопросы