Flex + java + orcale 存取Image

来源:互联网 发布:java的变量使用范围 编辑:程序博客网 时间:2024/06/08 19:37
 

最近有个小东西是关于Flex +java + orcale 在页面显示Image,刚开始时一筹莫展啊。。。行了不罗嗦,进主题。

首先:确定一下设计的思路,能够获取本地image,同时存到orcale中,然后可以从数据库中读取。

1 获取本地image;

 import flash.display.BitmapData;

 private var fr:FileReference;
   private var imageTypes:FileFilter; 
   private function init(event:Event):void
   {
    fr=new FileReference();
    imageTypes=new FileFilter("Images (*.jpg, *.jpeg, *.png, *.gif)","*.jpg; *.jpeg; *.png; *.gif;");
    //增加当打开浏览文件后,用户选择好文件后的listener
    fr.addEventListener(Event.SELECT,selectHandler);
   }
   
   private function selectHandler(event:Event):void
   {
    //增加一个文件加载load完成后的listener
    fr.addEventListener(Event.COMPLETE,onLoadComplete);
    fr.load();//加载用户选中文件
    
   }
   private var pbitData:BitmapData;
   private function onLoadComplete(event:Event):void
   {
    imgPhoto.source = fr.data; 
    var num:int = selectedUserNum;
    RoUserSet.saveImg(fr.data,num);//here ,i can save this image to orcale,The RemoteObject has been used .
   }
   private function browseHandler(event:Event):void
   {
    fr.browse([imageTypes]);
   }

这里要指出的一点是:在浏览中打开的图片image 已经是 一种编码格式,具体我也不太了解这种编码是什么格式的,而且我在存到数据库的时候并不是存的图片的路径,而是存的编码,因为保存路径的话,如果图片丢失了,就会回去不到图片。这个编码相当于rgb吧。。。

2 存到数据库java端

dao 文件

public void saveImg(byte[] sigimg,int usernum);

daoImpl文件

public void saveImg(byte[] sigimg,int usernum)
 {
  userSet.setUsernum(usernum);
  userSet.setSigimg(sigimg);
  getSqlSession().update("com.cons.pmconf.deptUserMNG.model.UserSet.updateImg",userSet);
 }

 action 文件

public void saveImg(byte[] sigimg,int usernum)
 {
   this.userSetDAO.saveImg(sigimg,usernum);
 }

sql 语句

<update id="updateImg" parameterType ="com.cons.pmconf.deptUserMNG.model.UserSet" >
   update tbusers set sigimg = #{sigimg} where usernum = #{usernum}
  </update>

3 后台从数据库获取图片 返回一个Obj,在前台从这个Obj中再获取image的编码。

dao 文件

public Object getImage(int usernum)
 {
  return   userSetDAO.getImage(usernum);
 }

daoImpl文件

public Object getImage(int usernum )
 {
  userSet.setUsernum(usernum);
  Object obj = getSqlSession().selectOne("com.cons.pmconf.deptUserMNG.model.UserSet.getImage", usernum);
  return (obj == null) ? null : obj;
 } 

action 文件

public void saveImg(byte[] sigimg,int usernum)
 {
   this.userSetDAO.saveImg(sigimg,usernum);
 }

sql 语句

<select id="getImage" parameterType="com.cons.pmconf.deptUserMNG.model.UserSet"  resultType="sigimg" >
   select sigimg from tbusers where usernum = #{usernum}
  </select>

4 前台获取后台返回的Obj

 private var imageBit:ByteArray = new ByteArray();
   private function getImageRHandler(event:ResultEvent):void
   {
    var obj:Object = null;
    obj = event.result as Object;
    if(obj == null)
     this.imgPhoto.source = "com/cons/modules/deptUserMNG/images/NoSigImg.PNG";//赋予一个默认的图片,防止数据库中没有图片信息的时候出现错误。
    else
    {
     imageBit = obj.img; //img是数据库中的字段名称
     this.imgPhoto.source = imageBit;
    }
   }

  以上4个步骤就可以解决这个问题了。希望对大家有用。
原创粉丝点击