使用groovy和java两种方式下载文件文件

来源:互联网 发布:2016年淘宝小模特招聘 编辑:程序博客网 时间:2024/05/19 13:28


groovy方式

def downloadTemplate = {        def appPath = servletContext.getRealPath("/").toString()        def file = new File(appPath + "template/" + params.fileName)        response.setHeader("Content-disposition", "attachment; filename=merTemplate.xls")        response.contentType = "application/x-rarx-rar-compressed"        response.setCharacterEncoding("utf-8")        response.outputStream << file.newInputStream()    }

java方式

def downloadTemplate = {        try {            def appPath = servletContext.getRealPath("/").toString()            def file = new File(appPath + "template/" + params.fileName)            if(file.length()>0){                response.setHeader("Content-disposition", "attachment; filename=merTemplate.xls")                response.contentType = "application/x-rarx-rar-compressed"                response.setCharacterEncoding("utf-8")                def out = response.getOutputStream()                InputStream is = new FileInputStream(file)                byte[] buffer = new byte[1024]                int i = -1                while ((i = is.read(buffer)) != -1){                    out.write(buffer, 0, i)                }                out.flush()                out.close()                is.close()            }        }catch(Exception ex) {            ex.printStackTrace()        }    }

此为Grails项目中代码。

groovy方式应为使用其定义的<<方式,显得实现较为简单,但流的关闭不确定groovy是如何处理的

java方式就是我们比较熟悉了,有文件流的关闭,感觉比较条理清晰。

建议还是使用java这种方式来实现。








0 0