1、将附件 grails-kindeditor.rar 带目录解压到web-app目录
2、gsp文件代码:
<head>
<script charset="utf-8" src="${resource(dir: 'kindeditor', file: 'kindeditor.js')}"></script>
<script>
KE.show({
id : 'repost_content',
resizeMode : 1,
allowPreviewEmoticons : false,
allowUpload : true,
imageUploadJson : '${createLink(action:'uploadimagejson')}',
attachUploadJson : '${createLink(action:'uploadattachjson')}',
items : [
'fontname', 'fontsize', '|', 'textcolor', 'bgcolor', 'bold', 'italic', 'underline',
'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
'insertunorderedlist', '|', 'emoticons', 'image', 'attach', 'flash', 'link']
});
</script>
</head>
<body>
<g:textArea id="repost_content" name="content" rows="500" cols="400"/>
</body>
3、action代码:
本来是使用对象封装了文件部分属性,这里假定Attach对象有originalName属性,再使用最简单的saveFile,getFile闭包实现
import grails.converters.JSON
def uploadattachjson = {
def text = [error: 1, message: '请选择文件。'] as JSON
if (params.attachFile) {
def attach = savePic(params.attachFile)
text = [error: 0, url: createLink(action: 'downattach', id: attach.id)] as JSON
}
render(contentType: 'text/html; charset=UTF-8', text: text)
}
def downattach = {
def attach = getFile(params.id)
if (attach.exists()) {
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${getFileName(attach.originalFilename)}" )
response.setContentLength(attach.length() as int)
response.outputStream.write(attach.bytes)
} else {
response.sendError(404)
}
}
def getFileName = {
String agent = request.getHeader('USER-AGENT')
if (null != agent && -1 != agent.indexOf('MSIE')) {
URLEncoder.encode(it, 'UTF8')
} else {
MimeUtility.encodeText(it, 'UTF8', 'B')
}
}
def saveFile = {
def attach = new Attach()
attach.originalName = it.originalFilename
it.transferTo(
new File('c:\attach\'+it.originalFilename)
)
attach.save()
}
def getFile = {
def attach = Attach.get(it)
new File('c:\attach\'+attach.originalName)
}
分享到:
相关推荐
描述中提到“freemarker是一个比较好用的java模板引擎,grails也对它有很好的支持”。这暗示在Grails项目中,开发者可以利用FreeMarker的强大模板功能来分离视图层的逻辑,使得视图与控制器、模型之间的耦合度降低,...
本教程将深入探讨如何在Grails应用中使用Ajax,通过几个实际的例子来帮助理解其工作原理和常见用法。 1. **Ajax简介** Ajax(Asynchronous JavaScript and XML)的核心是JavaScript异步通信,它允许网页在不重新...
《Grails1.1中文文档》是Grails 1.1版本的官方中文指南,包含了框架的详细介绍、安装指南、基本概念、MVC模式的应用、GORM的使用、服务层、控制器、视图、国际化、测试等方面的内容。通过阅读这份文档,开发者可以...
- 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...
"grails ckeditor 0.4修改支持flv插入" 这个标题揭示了我们正在处理一个Grails应用,其中整合了CKEditor 0.4版本,并且已经进行了定制以支持FLV(Flash Video)格式的媒体插入。这表明开发者可能在编辑器中扩展了...
从给定的文件信息来看,主要关注点在于Grails框架的初学者使用说明。Grails是一个基于Groovy语言的开源Web应用开发框架,它利用了Java平台的优势,并结合了动态语言的灵活性,使得Web开发变得更为高效、简洁。下面将...
《Grails中文使用手册》是为开发者提供的一份详尽指南,旨在帮助用户快速掌握Grails框架的使用方法。Grails是一种基于Groovy语言的开源Web应用框架,它结合了模型-视图-控制器(MVC)架构模式,旨在提高开发效率,...
本文将详细介绍如何在Grails应用中使用FCK Editor,同时附带源码和操作截图,以帮助开发者快速理解和实现这一功能。 ### 1. 安装与引入FCK Editor 首先,我们需要下载FCK Editor的源码包,并将其解压到Grails项目...
这份用户手册将帮助你深入理解和高效使用Grails。 一、Grails基础 Grails的核心理念是“约定优于配置”,这意味着它有一套默认的规则和结构,减少了开发者在项目初始化阶段的工作量。例如,项目文件结构、数据库...
《使用 Grails 快速开发 Web 应用程序》 Grails,一个基于Groovy动态语言的开源MVC框架,为Web开发提供了高效且简洁的解决方案。自2007年发布以来,Grails以其快速开发能力,降低了Web应用的复杂性,吸引了众多...
3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,简化了数据持久化的过程。GORM支持多种数据库,如MySQL、PostgreSQL等。 4. **...
Grails还支持使用Java服务,这允许Java开发者可以更容易地迁移到Grails。 测试是确保软件质量的关键环节,Grails提供了一套完整的测试框架,包括单元测试、集成测试和功能测试。这些测试可以针对不同的层次和需求来...
- **创建应用**:使用`grails create-app Contact`命令可快速生成名为“Contact”的应用框架,该命令自动生成了标准的项目目录结构,包括但不限于`grails-app`下的`conf`、`controller`、`domain`、`i18n`、`...
与此同时,Eclipse作为一款强大的Java集成开发环境(IDE),也提供了丰富的插件支持,帮助开发者更高效地进行Grails项目的开发。本篇将详细讲解如何使用Eclipse开发Grails插件,以及涉及的相关知识点。 首先,让...
在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...
- 使用`grails create-app`命令快速创建一个新的Grails项目。 - 自动生成项目的基本结构,包括目录结构和必要的配置文件。 **Hello World示例** - 创建一个简单的控制器,实现基本的路由逻辑。 - 在视图中展示...
Eclipse插件提供了对Groovy和Grails的调试支持,你可以设置断点,查看变量值,甚至进行单步调试Grails脚本。在运行或调试Grails应用时,可以通过Eclipse的"Run Configurations"或"Debug Configurations"来配置启动...