Я пытался представить форму, содержащую несколько входов (тексты и одно изображение), но я не смог получить изображение из запроса (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
Может ли кто-нибудь взглянуть и помочь мне с некоторым трюком? Я искал примеры, и я не мог найти ничего, что помогло бы.
О, это ошибка копирования/вставки. Я не пропустил это в своем коде, но я понял, что здесь происходит. –