最近有个小东西是关于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;
}
}