引用
1.gsp 上传页面代码
<g:form controller="document" action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="myFile" /> <g:select name="purCategory.id" from="${purcatelist}" optionKey="id" value="${documentInstance?.purCategory?.id}" />
<input type="submit" value="上 传" />
</g:form>
注:enctype="multipart/form-data" 必须要写
引用
2.controller 里的代码
def upload = {
def documentInstance = new Document(params)
def url = params.myFile
// println url
def f = request.getFile('myFile')
if(!f.empty) {
def webRootDir = servletContext.getRealPath("/")
println webRootDir
def userDir = new File(webRootDir, "/payload/")
userDir.mkdirs()
f.transferTo( new File( userDir, f.originalFilename))
documentInstance.fileName = f.originalFilename
}
documentInstance.save()
documentInstance.errors.each{
println it
}
if(!documentInstance.hasErrors() && documentInstance.save()) {
flash.message = "上传成功"
redirect(action:show,id:documentInstance.id)
}
else {
render(view:'create',model:[documentInstance:documentInstance])
}
}
引用
3.下载1
可以直接在gsp页面下载 gsp上的代码
<g:each in="${documentInstanceList}" status="j" var="document">
<tr>
<td width="640" nowrap="nowrap" style="padding: 0 15px;border-bottom:1px #CCC dashed;">${fieldValue(bean:document, field:'title')}</td>
td width="64" height="40" class="table_link" style="border-bottom:1px #CCC dashed;">
<a href="${request.getContextPath()}/payload/${document.fileName}" target="_blank">下载</a></td>
</tr>
</g:each>
下载2
在controller里写下载action
def download = {
def documentInstance = Document.get(params.id)
def filename = documentInstance.fileName
// println filename
response.setHeader("Content-disposition", "attachment; filename=" + filename)
response.contentType = ""
def webRootDir = servletContext.getRealPath("/")
def filepath = new File(webRootDir, "/upload/${filename}")
//def filepath = "E:/founderweb/web-app/upload/${filename}"
// println filepath
def out = response.outputStream
def inputStream = new FileInputStream(filepath)
byte[] buffer = new byte[1024]
int i = -1
while ((i = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, i)
}
out.flush()
out.close()
inputStream.close()
}
页面gsp上代码
<g:link controller="document" action="download" id="${document.id}" target="_blank">下载</g:link>
引用
4.判断文件后缀名
int i = filename.LastIndexOf("."); //取得文件名中最后一个"."的索引
string newext = filename.Substring(i); //获取文件扩展名
if (newext != ".gif" && newext != ".jpg" && newext != ".jpeg" && newext != ".bmp" && newext != ".png")
{
Response.Write("文件格式不正确,请上传gif、jpg、jpeg、bmp及png的格式图片文件!");
Response.End();
}
引用
5.判断文件上传大小
if(f.size>10240){
}
else{
}
引用
6.把上传文件名称以时间命名
def sdf = new SimpleDateFormat("yyyyMMddHHmmssS")//格式化时间输出
def rname = sdf.format(new Date())//取得当前时间,Date()是java.util包里的,这作为真实名称
// println rname
def name = f.originalFilename//得到上传文件的原名称
//println name
int i = name.lastIndexOf(".")//原名称里倒数第一个"."在哪里
def ext = name.substring(i+1)//取得后缀,及"."后面的字符
name = rname+"."+ext//拼凑而成
分享到:
相关推荐
综上所述,Grails框架下的文件上传和下载功能,虽然基于简单的工具类和页面交互实现,但背后涉及到对HTTP协议的理解、文件I/O操作以及安全性考量。熟练掌握这些技巧,对于提升Web应用程序的功能性和用户体验至关重要...
在本文中,我们将深入探讨如何在Grails框架中结合uploadify插件实现文件上传功能。Grails是一款基于Groovy语言的、高效的Web应用开发框架,它简化了Java平台上的开发流程。uploadify则是一个JavaScript库,它允许...
Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with grails chinese Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with ...
Grails 支持多语言环境,通过i18n资源文件,轻松实现应用的国际化和本地化。 11. **模板引擎与标签库** GSP(Groovy Server Pages)支持自定义标签库,使得视图层逻辑更加清晰,同时提供了内置的标签,如`g:form`...
3. 扩展性:FCKEditor插件可以与其他Grails插件(如文件上传插件)配合使用,提供更强大的功能,如图片管理和多媒体资源管理。 4. 版本兼容:虽然grails-fckeditor-0.9.5是较旧的版本,但理解其工作原理有助于我们...
3. 部署:将WAR文件上传至服务器的Web容器目录下,如Tomcat的webapps目录,然后启动或重启容器。 4. 配置:根据应用需求,可能需要配置环境变量,如数据库连接信息、应用日志路径等。 5. 监控和优化:部署后,可以...
### Grails框架中文第二版...- 支持上传文件,简化了文件上传逻辑。 - 支持命令对象,用于封装复杂的表单数据。 - 支持处理重复的表单提交,防止恶意操作。 - 支持简单类型转换器,用于将字符串转换成特定的数据类型。
你可以修改模板文件,引入CSS库如Bootstrap来美化界面,或者利用jQuery插件增强交互性,例如文件上传、日期选择等。 3. **调整模板逻辑**:在Grails中,模板文件使用Groovy模板语言编写,允许直接嵌入Groovy代码。...
- **处理文件上传**:实现文件上传功能。 - **上传到文件系统**:将文件保存到文件系统中。 - **从数据库中递交相片**:将图片数据存储到数据库中。 **7.6 通过过滤器拦截请求** - **编写第一个过滤器**:创建一个...
标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-...对于使用Grails开发的Web应用,这个插件可以帮助实现用户友好的富文本编辑功能,同时需要注意描述中提及的安全问题,确保已修复相关漏洞,防止非法文件上传。
这样,Grails在运行时可以自动加载所需的JavaScript和CSS文件。 ### 2. 创建Grails视图 在Grails中,创建一个新的GSP(Groovy Server Pages)视图,用于展示FCK Editor。在视图文件中,我们需要引用FCK Editor的...
7.10 处理文件上传 7.10.1 使用multipart请求 7.10.2 上传和数据绑定 7.11 本章小结 第8章 groovycservercpages 8.1 基础知识 8.1.1 理解模型 8.1.2 页面指令 8.1.3 ...
将Grails Plugin Converters 2.3.1与Box Java SDK v2 结合,开发者可以在Grails应用中直接处理Box上的文件数据,比如,从Box下载文件并将其转换成特定格式,或者接收用户上传的经过转换的数据并存储到Box账户中。...
SWFUpload是一个流行的JavaScript库,专门用于在网页上实现文件上传功能。它利用Flash技术来克服HTML表单上传文件时的...结合`applyForm.gsp`和`js`文件,你可以创建一个自定义的文件上传界面,满足项目的特定需求。
- **处理文件上传**:讲解了如何处理用户上传的图片文件。 - **上传到文件系统**:介绍了如何将文件保存到文件系统。 - **从数据库中递交相片**:探讨了如何将图片数据保存到数据库。 **7.6 通过过滤器拦截请求** ...
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
- **处理文件上传**:如果需要支持图片或其他文件上传,你需要扩展FCK Editor的默认配置,创建一个Controller处理上传请求,并将上传文件保存在服务器上。 **4. 源码与文档** 提供的源码包含了一个完整的Grails项目...
最后,确保你的Grails应用能够处理文件上传,可能需要配置安全设置,例如允许特定的MIME类型和文件大小。同时,你可能还需要考虑文件重命名、存储路径、权限控制等问题。 通过以上步骤,你已经在Grails应用中成功...
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
8.2 文件上传的实现 107 8.2.1 开发表单页面 107 8.2.2 在Controller中接收文件 108 8.3 修改订单状态 109 8.4 本章小结 110 第9章 Grails的自动化测试 111 9.1 Grails自动化测试基础知识 111 9.2 编写测试用例 113...