`

grails文件下载+图片查看

阅读更多
/**
 * 下载
 * @return
*/
def download(){
    def fileObj = ValuationHistoryForNSQ.get(params["id"])
    def file_name = fileObj.getFile_name()
    def file_type = fileObj.getFile_type()
    def root_path = fileObj.getRoot_path()
    def file_path = fileObj.getFile_path()
    def downloadPath = root_path+file_path+file_name

    def bis = new BufferedInputStream(new FileInputStream(downloadPath))
    def bos = new BufferedOutputStream(response.outputStream)

    long fileLength = new File(downloadPath).length()

    response.setCharacterEncoding("UTF-8")
    response.setContentType("multipart/form-data")

    String userAgent = request.getHeader("User-Agent").toLowerCase()

    if( userAgent.contains("msie") || userAgent.contains("like gecko") ){
        // win10 ie edge 浏览器 和其他系统的ie
file_name = URLEncoder.encode(file_name, "UTF-8")
    }else {
        file_name = new String(file_name.getBytes("UTF-8"), "iso-8859-1")
    }

    response.setHeader("Content-disposition", 
	String.format("attachment; filename=\"%s\"", file_name))
    response.setHeader("Content-Length", String.valueOf(fileLength))

    byte[] buff = new byte[2048]
    int bytesRead
    while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
        bos.write(buff, 0, bytesRead)
    }
    bis.close()
    bos.close()
}


/**
 * 查看图片
 * @return
*/
def look(){
    def fileObj = ValuationHistoryForNSQ.get(params["id"])
    def file_name = fileObj.getFile_name()
    def file_type = fileObj.getFile_type()
    def root_path = fileObj.getRoot_path()
    def file_path = fileObj.getFile_path()
    def downloadPath = root_path+file_path+file_name

    //读取本地图片输入流
FileInputStream inputStream = new FileInputStream(downloadPath);
    int i = inputStream.available();
    //byte数组用于存放图片字节数据
byte[] buff = new byte[i];
    inputStream.read(buff);
    //记得关闭输入流
inputStream.close();
    //设置发送到客户端的响应内容类型
response.setContentType("image/*");
    OutputStream out = response.getOutputStream();
    out.write(buff);
    //关闭响应输出流
out.close();
}
查看图片前台方法:
<a href="javascript:void(0)" class="btn btn-xs btn-primary btn-outline" 

onclick="look(${it?.id})">查看</a>
function look(id) {
    var srcPath = '/valuationHistoryForNSQ/look?id='+id
    var imgPath = '<img src="'+srcPath+'" width="800px" height="500px">'
    layer.open({
        type: 1 //Page层类型
        ,area: ['800px', '542px']
        ,title: '查看'
        ,scrollbar: false //屏蔽浏览器滚动条
        ,shade: 0.6 //遮罩透明度
        ,maxmin: false //允许全屏最小化
        ,anim: 5 //0-6的动画形式,-1不开启
        ,content: imgPath
});
}

grails文件下载,注意中文乱码问题,我的文件路径、文件名称是从数据库查出来的。

我用的win10系统,值得注意的是win10 ie和edge与其他浏览器的区别

分享到:
评论

相关推荐

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

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

    grails中的上传,下载

    在Grails框架中,文件的上传与下载是常见的功能需求,尤其在开发涉及大量文档、图片或媒体文件处理的应用程序时。以下是对Grails中上传和下载操作的深入解析,包括其实现机制、代码示例及注意事项。 ### 文件上传 ...

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

    对于uploadify,由于它是一个前端组件,你需要将它的JavaScript和CSS文件下载到项目的公共资源目录,如`web-app/js`和`web-app/css`。确保这些文件在应用运行时可以被浏览器访问。 接下来,我们需要在Grails视图...

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

    首先,我们需要下载FCK Editor的源码包,并将其解压到Grails项目的web-app目录下的js或lib文件夹。这样,Grails在运行时可以自动加载所需的JavaScript和CSS文件。 ### 2. 创建Grails视图 在Grails中,创建一个新的...

    grails app

    本压缩包文件“grails app”包含了一步步搭建Grails应用的源代码,虽然缺失了图片说明,但通过解析代码,我们可以深入理解Grails应用的构建过程。 1. **Grails框架介绍** Grails是基于MVC(Model-View-Controller...

    Grails Jquery 集成代码

    Grails使用Resource Management机制来处理静态资源,如CSS、JavaScript和图片。确保在`grails-app/conf/Config.groovy`文件中配置资源管理,使JQuery能够被正确加载。 ```groovy grails.assets.enabled = true ...

    Grails基础教程.pdf

    - **从数据库中递交相片**:将图片数据存储到数据库中。 **7.6 通过过滤器拦截请求** - **编写第一个过滤器**:创建一个简单的过滤器来处理特定的请求。 - **过滤器的URL选择**:如何配置过滤器只对特定的URL路径...

    Grails基础教程

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

    一步一步学grails(2)

    总结一下,自定义Grails应用界面主要包括两步:一是通过修改`main.gsp`布局文件中的图片引用,替换Logo;二是调整`Config.groovy`文件的编码设置,并修改GSP页面内容以支持中文显示。这些基本操作能帮助你打造出更加...

    grails-docs-1.0

    《Grails框架API文档详解——基于grails-docs-1.0》 Grails是一种基于Groovy语言的开源Web应用框架,它简化了Java开发,提供了丰富的功能和强大的工具,深受开发者喜爱。本文将深入探讨grails-docs-1.0版本的API...

    Grails使用kindeditor,支持附件

    在Grails应用中集成KindEditor,可以为用户提供一个富文本输入体验,同时支持图片、文件等附件的上传。 首先,你需要在Grails项目的`grails-app/assets/javascripts`目录下引入KindEditor的JS和CSS文件。你可以从...

    groovy grails简介

    "技术文章-Groovy和Grails简介.files"可能包含的是与文章相关的资源,如图片、示例代码片段或者样式文件,这些文件可以帮助读者更好地理解文章内容,例如查看Groovy代码示例或Grails项目的目录结构。 总之,Groovy...

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

    - **下载与引入FCK Editor**:首先,你需要从FCK Editor的官方网站下载最新版本的编辑器,然后将其解压到Grails项目的`web-app`目录下的`js`或`lib`子目录。 - **创建Controller**:在Grails中,创建一个用于处理富...

    基于grails开发的财政项目

    4. `web-app`: 前端资源文件,包括EasyUI的CSS、JS以及图片等。 5. `scripts`: 可能包含脚本文件,用于初始化数据库、部署应用等。 6. `test`: 测试代码目录,使用Spock测试框架进行单元测试和集成测试。 综上所述...

    bootStrapDemo:Grails项目

    3. **web-app**: 这是Grails应用的静态资源目录,包括CSS、JavaScript、图片等。在本项目中,Bootstrap的CSS和JS文件可能位于此目录下的某个子目录,如`web-app/assets/css`和`web-app/assets/js`,这些文件将被自动...

    image-manager:Grails 图像管理器插件

    5. **访问控制**:支持权限管理,控制用户对图片的查看、编辑和删除权限。 6. **API接口**:提供RESTful API,便于其他应用或服务与图片管理系统交互。 7. **前端集成**:通常会提供前端组件,如JavaScript库,方便...

    grails-burning-image:Grails 的刻录图像插件 - http

    在Grails项目中集成“grails-burning-image”插件,只需在配置文件中声明依赖,然后在代码中导入相应的服务和库,即可开始使用。插件的文档详细介绍了配置和使用步骤,对于开发者来说非常友好。 六、未来展望 随着...

    ChamadoFacil:Grails 票务登记系统

    3. **资源**:包括静态文件(如CSS、JavaScript和图片)以及本地化的资源文件。 4. **测试**:`test/`目录下的代码用于单元测试和集成测试,确保应用功能的正确性。 5. **构建脚本**:`BuildConfig.groovy`用于定义...

    lucky-grails.github.io

    9. **静态资源管理**:项目可能包含一个`assets`目录,存放图片、图标和其他静态资源,这些资源会被引用到HTML文件中。 10. **JavaScript库和框架**:为了实现交互功能,项目可能使用了jQuery、React、Vue.js等...

Global site tag (gtag.js) - Google Analytics