gpt4 book ai didi

grails - 文件上传不适用于Grails中的默认脚手架

转载 作者:行者123 更新时间:2023-12-02 14:57:56 25 4
gpt4 key购买 nike

在Grails 3.1.19中,我创建了一个带有以下字段的域类

byte[] caCert.

当访问生成的创建 Action 时,我得到一个文件浏览对话框并上传文件。单击创建时,我得到 caCert is type-mismatched

查看params对象,看来我只得到文件名,它是一个字符串。使用默认的脚手架,如何获取byte []字段以实际获取我上传的文件的内容?创建 Controller 代码是
def create() {
respond new TaskUser(params)
}

保存 Controller 的 Action 是
def save(TaskUser taskUser) {
if (taskUser == null) {
transactionStatus.setRollbackOnly()
notFound()
return
}

if (taskUser.hasErrors()) {
transactionStatus.setRollbackOnly()
respond taskUser.errors, view:'create'
return
}

taskUser.save flush:true

request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'taskUser.label', default: 'TaskUser'), taskUser.id])
redirect taskUser
}
'*' { respond taskUser, [status: CREATED] }
}
}

创建模板的表单部分如下
<div id="create-taskUser" class="content scaffold-create" role="main">
<h1><g:message code="default.create.label" args="[entityName]" /></h1>
<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
<g:hasErrors bean="${this.taskUser}">
<ul class="errors" role="alert">
<g:eachError bean="${this.taskUser}" var="error">
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
</g:eachError>
</ul>
</g:hasErrors>
<g:form action="save">
<fieldset class="form">
<f:all bean="taskUser"/>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
</fieldset>
</g:form>
</div>

最佳答案

我希望这可以增加一些值(value)。

在这里遇到了同样的问题。
创建一个基本的Domain类,其属性类型为byte [],然后运行默认的脚手架。

尝试保存实例时,获取“类型不匹配”验证消息。

根据Gorille的回答,我检查了文档,并将 enctype =“multipart / form-data” 属性添加到 g:form 标记将使其起作用。
不太确定为什么脚手架不能解决这个问题。

<g:form action="save" enctype="multipart/form-data">

正如他提到的,另一种选择是将标签更改为 g:uploadForm ,该标签专门用于此目的。

Doc:

The uploadForm tag conveniently adds the enctype="multipart/form-data" attribute to the standard tag.



Tag doc:

uploadForm: Identical to the standard form tag except that it sets the enctype attribute to "multipart/form-data" automatically.



我检查了参数,它具有完整的文件。

关于grails - 文件上传不适用于Grails中的默认脚手架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com