`

grails 文件的上传和下载

阅读更多
引用
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="上&nbsp;&nbsp;&nbsp;传" />
      </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中的上传,下载

    综上所述,Grails框架下的文件上传和下载功能,虽然基于简单的工具类和页面交互实现,但背后涉及到对HTTP协议的理解、文件I/O操作以及安全性考量。熟练掌握这些技巧,对于提升Web应用程序的功能性和用户体验至关重要...

    Grails结合uploadify上传文件的简单代码

    在本文中,我们将深入探讨如何在Grails框架中结合uploadify插件实现文件上传功能。Grails是一款基于Groovy语言的、高效的Web应用开发框架,它简化了Java平台上的开发流程。uploadify则是一个JavaScript库,它允许...

    Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with grails chinese Grails入门指南书籍和源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺 getting started with ...

    grails 文档

    Grails 支持多语言环境,通过i18n资源文件,轻松实现应用的国际化和本地化。 11. **模板引擎与标签库** GSP(Groovy Server Pages)支持自定义标签库,使得视图层逻辑更加清晰,同时提供了内置的标签,如`g:form`...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    3. 扩展性:FCKEditor插件可以与其他Grails插件(如文件上传插件)配合使用,提供更强大的功能,如图片管理和多媒体资源管理。 4. 版本兼容:虽然grails-fckeditor-0.9.5是较旧的版本,但理解其工作原理有助于我们...

    Grails企业web应用开发与部署

    3. 部署:将WAR文件上传至服务器的Web容器目录下,如Tomcat的webapps目录,然后启动或重启容器。 4. 配置:根据应用需求,可能需要配置环境变量,如数据库连接信息、应用日志路径等。 5. 监控和优化:部署后,可以...

    grails 中文第二版

    ### Grails框架中文第二版...- 支持上传文件,简化了文件上传逻辑。 - 支持命令对象,用于封装复杂的表单数据。 - 支持处理重复的表单提交,防止恶意操作。 - 支持简单类型转换器,用于将字符串转换成特定的数据类型。

    grails脚手架2次优化

    你可以修改模板文件,引入CSS库如Bootstrap来美化界面,或者利用jQuery插件增强交互性,例如文件上传、日期选择等。 3. **调整模板逻辑**:在Grails中,模板文件使用Groovy模板语言编写,允许直接嵌入Groovy代码。...

    grails-fck-editor-0.3.zip_grails_grails-fck-editor

    标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-...对于使用Grails开发的Web应用,这个插件可以帮助实现用户友好的富文本编辑功能,同时需要注意描述中提及的安全问题,确保已修复相关漏洞,防止非法文件上传。

    Grails使用FCK Editor(附源码,有截图)

    这样,Grails在运行时可以自动加载所需的JavaScript和CSS文件。 ### 2. 创建Grails视图 在Grails中,创建一个新的GSP(Groovy Server Pages)视图,用于展示FCK Editor。在视图文件中,我们需要引用FCK Editor的...

    Grails权威指南

     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.zip

    将Grails Plugin Converters 2.3.1与Box Java SDK v2 结合,开发者可以在Grails应用中直接处理Box上的文件数据,比如,从Box下载文件并将其转换成特定格式,或者接收用户上传的经过转换的数据并存储到Box账户中。...

    swfupload上传文件

    SWFUpload是一个流行的JavaScript库,专门用于在网页上实现文件上传功能。它利用Flash技术来克服HTML表单上传文件时的...结合`applyForm.gsp`和`js`文件,你可以创建一个自定义的文件上传界面,满足项目的特定需求。

    Grails基础教程

    - **处理文件上传**:讲解了如何处理用户上传的图片文件。 - **上传到文件系统**:介绍了如何将文件保存到文件系统。 - **从数据库中递交相片**:探讨了如何将图片数据保存到数据库。 **7.6 通过过滤器拦截请求** ...

    Grails技术精解与Web开发实践.part1

    自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。

    Grails使用FCK Editor实例(附源码和文档)

    - **处理文件上传**:如果需要支持图片或其他文件上传,你需要扩展FCK Editor的默认配置,创建一个Controller处理上传请求,并将上传文件保存在服务器上。 **4. 源码与文档** 提供的源码包含了一个完整的Grails项目...

    Grails使用kindeditor,支持附件

    最后,确保你的Grails应用能够处理文件上传,可能需要配置安全设置,例如允许特定的MIME类型和文件大小。同时,你可能还需要考虑文件重命名、存储路径、权限控制等问题。 通过以上步骤,你已经在Grails应用中成功...

    Grails技术精解与Web开发实践.part2

    自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    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...

Global site tag (gtag.js) - Google Analytics