domain的属性类型设置为byte[]

1. domain设置

class LinkBean{

..

String p_w_picpathName // 图片名称

byte[] p_w_picpath // 图片内容

static mapping = {

p_w_picpath type: 'p_w_picpath' // 设置数据库类型

}

2. controller设置

保存之前,先处理上传的文件名

// set p_w_picpath file name

CommonsMultipartFile file = params.p_w_picpath

if (file)

linkBean.p_w_picpathName = file.originalFilename

3. form设置

在_form.gsp页面,显示input的文件类型

<input type="file" id="p_w_picpath" name="p_w_picpath" accept="p_w_picpath/*" />

上述结束后,p_w_picpath会编码为base64进行存储,所以,还需要增加显示图片的一个action

def showImage(LinkBean linkBean) {

if (linkBean == null) {

notFound()

return

}

if (linkBean.p_w_picpathName && linkBean.p_w_picpath) {

response.outputStream << linkBean.p_w_picpath

}

}

在需要显示图片的地方,嵌入即可:

<img src="${createLink(action: 'showImage', id: linkBean.id)}" />

扩展:

<input type="file" />浏览时只显示指定文件类型

<input type="file" accept="application/msword" ><br><br>accept属性列表<br>

1.accept="application/msexcel"
2.accept="application/msword"
3.accept="application/pdf"
4.accept="application/poscript"
5.accept="application/rtf"
6.accept="application/x-zip-compressed"
7.accept="audio/basic"
8.accept="audio/x-aiff"
9.accept="audio/x-mpeg"
10.accept="audio/x-pn/realaudio"
11.accept="audio/x-waw"
12.accept="p_w_picpath/gif"
13.accept="p_w_picpath/jpeg"
14.accept="p_w_picpath/tiff"
15.accept="p_w_picpath/x-ms-bmp"
16.accept="p_w_picpath/x-photo-cd"
17.accept="p_w_picpath/x-png"
18.accept="p_w_picpath/x-portablebitmap"
19.accept="p_w_picpath/x-portable-greymap"
20.accept="p_w_picpath/x-portable-pixmap"
21.accept="p_w_picpath/x-rgb"
22.accept="text/html"
23.accept="text/plain"
24.accept="video/quicktime"
25.accept="video/x-mpeg2"
26.accept="video/x-msvideo"

这个就可以实现选择具体的数据类型,但是有兼容问题,我在测试的时候只有Opera,Chrome能用,火狐和IE都不兼容

好吧,就在这里测试一下吧:

我只想要word

在这里如果想支持多种类型的话,比如金山的office和microsoft的office的不同扩展名,这样的话可以在accept里面放置多个属性就可以了:

<form> <input type="file" name="pic" id="pic" accept="p_w_picpath/gif, p_w_picpath/jpeg" /></form>

如果不限制图像的格式,可以写为:accept="p_w_picpath/*"。同样是可以的

好的,测试一下:

我只想要gif、bmp

好吧,只要是图片我就要了

嗯,测试成功,用Opera,Chrome能用,因为accept也是html5的新特性,所以火狐和IE的支持就显得单薄了,这样还是让我们等待他们的接受把
测试了好久,发现gif和bmp一起的时候并不是能取得他们的并集,仔细观察以后是按写入顺序排列了一下他们的“文件选择类型”:

就像是下面的图片一样:

我们如果不定义input file的格式的时候,那么文件类型的地方就是全部文件*.*,如果我们定义了自己的,那么文件类型就会和我们选中的一样,但是这时候我们如果想看别的文件的时候还是可以通过文件类型的下拉框,去选择自己额外喜欢的类型的,简单的说,它就是起到了一个简单的按照我们的主观意愿筛选的作用,同时我们如果不是选择的p_w_picpath/*而是好几个并列的话就会按照上面的情况分别得排列出来,比如图上的我input就是这个样子的:

<form> <input type="file" name="pic" id="pic" accept="p_w_picpath/gif, p_w_picpath/x-ms-bmp, p_w_picpath/bmp" /></form>

转载于:https://blog.51cto.com/xiaosa/1562040

grails 保存图片相关推荐

  1. 从oracle中读取图片,Pb从oracle中读取和保存图片

    Pb从oracle中读取和保存图片 (2008-12-12 12:23:20) 转载 分类:编程 标签: it //保存图片 //选择文件 string pname, fname integer va ...

  2. Create a restful app with AngularJS/Grails(4)

    为什么80%的码农都做不了架构师?>>>    #Standalone AngularJS application In the real world applications, i ...

  3. 捕获Camera并保存图片到本地(照相功能) -samhy

    Flex博文 捕获Camera并保存图片到本地(照相功能) -samhy 作者:admin 日期:2010-07-12 字体大小: 小 中 大 捕获Camera并保存图片到本地(照相功能) 这几天对C ...

  4. grails日志系统的研究

    对于grails的日志输出,我真的是给弄吐血了.开始以为很简单,后来发现grails封装log4j做的有点太多了,很多东西的封装理解了觉得还挺合理,但是不理解的话真是无比迷茫.对于是否有必要做这么多强 ...

  5. 图片管理之保存图片数据

    保存图片数据 在保存数据之前我们需要先获取图片关联的sku的id 1.获取sku表id 接口分析 请求方式: GET /meiduo_admin/skus/simple/ # -------获取sku ...

  6. 教你两种python selenium保存图片的方法

    大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...

  7. Python中scrapy下载保存图片

    在日常爬虫练习中,我们爬取到的数据需要进行保存操作,在scrapy中我们可以使用ImagesPipeline这个类来进行相关操作,这个类是scrapy已经封装好的了,我们直接拿来用即可. 在使用Ima ...

  8. Android保存图片到数据库,从数据库取图片的方法

    //1.创建数据库 public class DBService extends SQLiteOpenHelper { private final static int VERSION = 1; pr ...

  9. matlab常见用法汇总,包括绘制二维、三维曲线、圆、读取、保存图片/数据、数值精度、绘制圆、绘制角度等

    文章目录 写在前面 一 绘制二维曲线 二 绘制三维曲线 plot3. 三 绘制三维离散点 scatter3() 四 保存图片到本地 五 数值精度 六 字符串拼接 七 将数据保存到txt 八 matla ...

  10. R语言保存图片为特定dpi值(分辨率)的图像

    R语言保存图片为特定dpi值(分辨率)的图像 目录 R语言保存图片为特定dpi值(分辨率)的图像 # 保存为特定dpi像素的图像示例1

最新文章

  1. 从java到c_Binder机制,从Java到C (4. Parcel)
  2. 阿宽和阿良 - 死后咋样
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1092:求出e的值
  4. remote: GitLab: Author ‘xxx‘ is not a member of team(Git修改和配置本地用户名和邮箱)
  5. LeetCode 1063. 有效子数组的数目(单调栈)
  6. Ubantu系统配置固定IP地址和Pycharm连接远程服务器
  7. android oreo 源码,android – Oreo:如何在源代码中找到所有受限制的系统调用?
  8. 计算机上课创意互动游戏初中,16个课前热身小游戏:让每一堂课都充满新鲜感...
  9. 我的世界服务器不显示浮空字,我的世界服务器浮空字怎么做 | 手游网游页游攻略大全...
  10. Ghost 命令参数详解
  11. 【现代版】为人处世三十六计详解,真的很受益!
  12. mac unity3D汉化包
  13. dirent.h windows安装
  14. 非计算机,如何学习计算机视觉
  15. 大学计算机基础教程第11章计算机网络与应用总结
  16. 【system】关掉\禁用win7自动配置ipv4地址的方法 默认网关自动消失的解决办法
  17. python之道03
  18. 解决opencv imwrite()影像全黑
  19. 什么是群、什么是阿贝尔群(abel群、阿贝尔群也称为交换群或可交换群)、群论入门
  20. 编程为什么那么难:从储值卡扣款说起

热门文章

  1. ArcGIS加载Excel数据连接到数据库失败的解决办法
  2. 轮询、前后台和多任务系统软件模型区别
  3. SpringBoot项目的测试类
  4. dotween路径移动_使用DOTween Pro插件设置物体移动的位置、移动的方式、以及动画结束时执行方法...
  5. Retrofit之OkhttpCall执行原理详解
  6. Android Context简单说明
  7. ajax beforesend xhr对象,浅谈jQuery中Ajax事件beforesend及各参数含义
  8. java编码规范概述_Java 编码规范 (转)
  9. python语言适用于哪些领域_Python用于哪些领域
  10. 解析复杂结构的json文件的时候,快速生成结构体--golang