Oracle或Mysql存取图片

       如题, 在吃了NN多的亏以后,决心写下本文,小总结下图片上传的经验,可能类型不太正确,相信大家都懂的,写一下思路而已。

 

      以前用Struts1.X做过图片上传,用的是FormFile封装页面传过来的文件参数,而且Struts2.X用的是File类型 的,还可以封装文件名fileName和fileContentType文件类型(好像不是这个属性,跟这个差不多的),在Action里面封装好数据就行了,然后在Dao层处理一下,这里有一点区别:

    (假设数据库字段名为:PHOTO,  POJO对象的属性名为:photo,Action封装文件的属性名为:photoFile)

   1:Oracle数据库:


        POJO对象的属性设置 成Blob类型,然后利用

FileinputStream fileinputstream=new FileinputStream(photoFile);

Hibernate.createBlob(fileinputStream);

这个方法返回一个Blob类型的数据, 在hibernate的映射文件里面<property name="photo" column="PHOTO" />就行了,如果有问题,就再加上类型type 属性,然后调用 getHibernateTemplate().save()就行了。

 

 

2.mySql数据库:

 

      需要修改一下的是POJO的属性了,这里不用Blob类型了,改用byte[] 这种类型,

 

      byte[] fileBytes=null;

FileinputStream fileinputstream=new FileinputStream(photoFile);

     fileBytes=new byte[fileinputstream.avaliable()];

  fileinputstream.read(filebytes);

    fileinputstream.close();

 

采用二进制保存图片,然后hibernate映射文件修改成

<property name="photo" column="PHOTO"  type="binary" /> 这个,然后再调用 getHibernateTemplate.save()方法就行了。除些以外的,不用作修改 与oracle一样。(至少我的是这样的,成功 了)。

 

 

注意:Struts对于文件上传有大小限制 ,默认好像最大是2M多一点点(可以更改struts的配置),而mysql也是如此的,如果是大文件 的话,一个方面不建议直接保存在数据库,另一方面,必须要先修改一下mysql的配置文件 my.ini,添加一个max_allowed_packet(貌似是这样,自己google一下),设置一下允许 的最大值 ,才能上传。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值