快速业务通道

精通Grails: 文件上传和Atom联合 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
肃的技术” 中可 以了解到,列表中显示的文本来自 User.toString() 方法。该文本通常也是表单提交时作为字段值发回 到服务器的值。在这里,optionKey 属性覆盖字段值,从而发回 Author 的 id。

为 EntryController.groovy 提供 author.id 字段的最快方式是将一个隐藏字段添加到表单中,如清 单 3 所示。由于执行 create 动作前必须登录,而登录的 User 是博客条目的 author,因此对于这个值 可以安全地使用 session.user.id。

清单 3. 从表单传递 author.id 字段

<g:form action="save" method="post" >   <input type="hidden" name="author.id" value="${session.user.id}" />   <!-- SNIP --> </g:form>

对于像 Blogito 这样的简单的应用程序,这样也许就足够了。但是,这样做留下了一个漏洞,使客户 端的黑客有机会为 author.id 注入不同的值。为确保彻底的安全,可以在 save 闭包中添加 Entry.author,如清单 4 所示:

清单 4. 将 author.id 保存在服务器上

def save = {    def entryInstance = new Entry(params)    entryInstance.author = User.get(session.user.id)    if(!entryInstance.hasErrors() && entryInstance.save()) {      flash.message = "Entry ${entryInstance.id} created"      redirect(action:show,id:entryInstance.id)    }    else {      render(view:''create'',model:[entryInstance:entryInstance])    } }

这是生成控制器时得到的标准 save 闭包,再加上一行定制的代码。entryInstance.author 行根据 session.user.id 值从数据库获取 User,并填充 Entry.author 字段。

在下一节中,您将定制 save 闭包,以处理文件上传,所以您仍可能在安全性方面犯错误,将 清单 4 中的代码添加到 EntryController.groovy 中。重新启动 Grails,确保可以通过 HTML 表单成功地添加 新的 Entry。

精通Grails: 文件上传和Atom联合(3)

时间:2011-08-02 IBM Scott Davis

文件上传

现在又可以创建 Entry,接下来该添加另一个特性。我希望用户在创建新的 Entry 时可以上传文件。 这种文件可以是包含整个博客条目的 HTML,也可以是图像或任何其他文件。为实现该特性,需要涉及到 Entry domain 类、EntryController 和 GSP 视图 — 并且要增加一个新的 TagLib。

首先,看看 grails-app/views/entry/create.gsp。添加一个新字段,用于上传文件,如清单 5 所示 :

清单 5. 添加一个用于文件上传的字段

<g:uploadForm action="save" method="post" >   <!-- SNIP -->   <tr class="prop">    <td valign="top" class="name">     <label for="payload">File:</label>    </td>    <td valign="top">     <input type="file" id="payload" name="payload"/>    </td>   </tr> </g:uploadForm>

注意,<g:form> 标记已经被改为 <g:uploadForm>。这样便支持从 HTML 表单上传文件 。实际上,也可以保留 <g:form> 标记,并增加一个 enctype="multipart/form-data" 属性。( 用于 HTML 表单的默认 enctype 是 application/x-www-form-urlencoded)。

如果正确设置了表单的 enctype(或者使用 <g:uploadForm>),就可以添加 <input type="file" /> 字段。这样便为用户提

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号