Grails文件上传:视图渲染时如何设置输入文件的值

Posted

技术标签:

【中文标题】Grails文件上传:视图渲染时如何设置输入文件的值【英文标题】:Grails file upload: how to set the value of the input file when the view is rendered 【发布时间】:2015-08-06 05:12:36 【问题描述】:

我有一个upload 操作,它从视图上的表单接收文件。上传文件时完成验证。

如果文件无效,则再次显示视图,输入 type="file" 值应指向上传失败的文件。

这似乎不起作用:(视图中的代码)

<input type="file" name="opt" value="$params.opt" />

这是呈现给用户的:

<input type="file" name="opt" value="org.springframework.web.multipart.commons.CommonsMultipartFile@c9b839">

有什么想法吗?

【问题讨论】:

控制器upload 操作中发生了什么?上传失败后是否有返回视图的参数? 不,视图在没有传递任何模型的情况下被渲染。但是由于视图是在接收文件并验证它的同一请求中呈现的,因此视图可以访问“参数”,正如您在我的问题中看到的那样,视图正在呈现接收到的 CommonsMultipartFile 文件,但我认为应该是客户端中文件的路径。 ***.com/questions/11637187/… 也许这会有所帮助 这将获取文件的名称,我认为输入文件需要客户端上的完整路径才能在再次呈现页面时在字段上具有值。 【参考方案1】:

由于安全原因,这似乎是不可能的,事情是服务器可以访问可能包含私人信息的客户端文件,如果服务器知道路径。

更多信息:How to set a value to a file input in html?

我可能需要让用户再次选择文件,或者执行 AJAX 文件上传之类的操作:http://blog.teamtreehouse.com/uploading-files-ajax

【讨论】:

以上是关于Grails文件上传:视图渲染时如何设置输入文件的值的主要内容,如果未能解决你的问题,请参考以下文章

Grails 文件上传 - 如何识别文件和/或内容类型?

如何使用GoogleServiceAuthentication类将文件上传到Grails中的google存储?

Groovy/grails 如何使用 jquery 从视图中调用控制器方法

如何在 S3 上上传预渲染文件并在我们网页的初始加载时访问该文件?

Grails 渲染不同控制器的视图

从 Grails 中的控制器渲染 json 视图