/** * 下载 * @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与其他浏览器的区别
相关推荐
3. 扩展性:FCKEditor插件可以与其他Grails插件(如文件上传插件)配合使用,提供更强大的功能,如图片管理和多媒体资源管理。 4. 版本兼容:虽然grails-fckeditor-0.9.5是较旧的版本,但理解其工作原理有助于我们...
在Grails框架中,文件的上传与下载是常见的功能需求,尤其在开发涉及大量文档、图片或媒体文件处理的应用程序时。以下是对Grails中上传和下载操作的深入解析,包括其实现机制、代码示例及注意事项。 ### 文件上传 ...
对于uploadify,由于它是一个前端组件,你需要将它的JavaScript和CSS文件下载到项目的公共资源目录,如`web-app/js`和`web-app/css`。确保这些文件在应用运行时可以被浏览器访问。 接下来,我们需要在Grails视图...
首先,我们需要下载FCK Editor的源码包,并将其解压到Grails项目的web-app目录下的js或lib文件夹。这样,Grails在运行时可以自动加载所需的JavaScript和CSS文件。 ### 2. 创建Grails视图 在Grails中,创建一个新的...
本压缩包文件“grails app”包含了一步步搭建Grails应用的源代码,虽然缺失了图片说明,但通过解析代码,我们可以深入理解Grails应用的构建过程。 1. **Grails框架介绍** Grails是基于MVC(Model-View-Controller...
Grails使用Resource Management机制来处理静态资源,如CSS、JavaScript和图片。确保在`grails-app/conf/Config.groovy`文件中配置资源管理,使JQuery能够被正确加载。 ```groovy grails.assets.enabled = true ...
- **处理文件上传**:讲解了如何处理用户上传的图片文件。 - **上传到文件系统**:介绍了如何将文件保存到文件系统。 - **从数据库中递交相片**:探讨了如何将图片数据保存到数据库。 **7.6 通过过滤器拦截请求** ...
总结一下,自定义Grails应用界面主要包括两步:一是通过修改`main.gsp`布局文件中的图片引用,替换Logo;二是调整`Config.groovy`文件的编码设置,并修改GSP页面内容以支持中文显示。这些基本操作能帮助你打造出更加...
《Grails框架API文档详解——基于grails-docs-1.0》 Grails是一种基于Groovy语言的开源Web应用框架,它简化了Java开发,提供了丰富的功能和强大的工具,深受开发者喜爱。本文将深入探讨grails-docs-1.0版本的API...
在Grails应用中集成KindEditor,可以为用户提供一个富文本输入体验,同时支持图片、文件等附件的上传。 首先,你需要在Grails项目的`grails-app/assets/javascripts`目录下引入KindEditor的JS和CSS文件。你可以从...
"技术文章-Groovy和Grails简介.files"可能包含的是与文章相关的资源,如图片、示例代码片段或者样式文件,这些文件可以帮助读者更好地理解文章内容,例如查看Groovy代码示例或Grails项目的目录结构。 总之,Groovy...
- **下载与引入FCK Editor**:首先,你需要从FCK Editor的官方网站下载最新版本的编辑器,然后将其解压到Grails项目的`web-app`目录下的`js`或`lib`子目录。 - **创建Controller**:在Grails中,创建一个用于处理富...
4. `web-app`: 前端资源文件,包括EasyUI的CSS、JS以及图片等。 5. `scripts`: 可能包含脚本文件,用于初始化数据库、部署应用等。 6. `test`: 测试代码目录,使用Spock测试框架进行单元测试和集成测试。 综上所述...
3. **web-app**: 这是Grails应用的静态资源目录,包括CSS、JavaScript、图片等。在本项目中,Bootstrap的CSS和JS文件可能位于此目录下的某个子目录,如`web-app/assets/css`和`web-app/assets/js`,这些文件将被自动...
5. **访问控制**:支持权限管理,控制用户对图片的查看、编辑和删除权限。 6. **API接口**:提供RESTful API,便于其他应用或服务与图片管理系统交互。 7. **前端集成**:通常会提供前端组件,如JavaScript库,方便...
在Grails项目中集成“grails-burning-image”插件,只需在配置文件中声明依赖,然后在代码中导入相应的服务和库,即可开始使用。插件的文档详细介绍了配置和使用步骤,对于开发者来说非常友好。 六、未来展望 随着...
3. **资源**:包括静态文件(如CSS、JavaScript和图片)以及本地化的资源文件。 4. **测试**:`test/`目录下的代码用于单元测试和集成测试,确保应用功能的正确性。 5. **构建脚本**:`BuildConfig.groovy`用于定义...
9. **静态资源管理**:项目可能包含一个`assets`目录,存放图片、图标和其他静态资源,这些资源会被引用到HTML文件中。 10. **JavaScript库和框架**:为了实现交互功能,项目可能使用了jQuery、React、Vue.js等...