在flex做前台,java做后台语言的web中传送图片。
flex获取图片,下面的代码仅是有flex可以获得并将图片转码为string存放在message变量中,然后又进过转码将图片取出显示。至于message怎么发送,他就是将字符串怎么由socket发送到后台并存储数据库的事情!
import mx.utils.Base64Decoder;
import mx.utils.Base64Encoder;
import mx.core.BitmapAsset;
import flashx.textLayout.elements.DivElement;
import flashx.textLayout.elements.FlowElement;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.elements.TextFlow;
import mx.graphics.codec.JPEGEncoder;
import flash.net.FileReference;
private var file:FileReference;
public function imgcontent():ByteArray //获取图片
{
if (file.data.length>0)
{
var picture:ByteArray = null;
var bitmapData:BitmapData = new BitmapData(photo.width, photo.height);
bitmapData.draw(photo);
picture = new JPEGEncoder(100).encode(bitmapData);
var textFlow:TextFlow = new TextFlow();
file=null;
photo.visible=false;
textArea.visible=true;
return picture;
}
else
{
return null;
}
}
private function browseLocalPicture():void
{
file = new FileReference();
file.addEventListener(Event.SELECT, file_selectHandler);
file.addEventListener(Event.COMPLETE, file_completeHandler);
file.browse(new Array(new FileFilter("图像文件 (*.jpg,*.gif,*.png)", "*.jpg; *.gif; *.png")));
}
private function file_selectHandler(event:Event):void
{
file.load();
}
private function file_completeHandler(event:Event):FileReference
{
if (file.data.length>0)
{
photo.source=file.data;
photo.width=photo.sourceWidth;
photo.height=photo.sourceHeight;
return file;
}
else
{
//Prompt.show(this,"图片加载错误!","错误提示",Prompt.OK,null,"images/plaint.png");
return null;
}
}
private function imgsend():void //发送图片
{
var imgst:String;
var bitMap:Bitmap=new Bitmap();
var imgbyt:ByteArray=editor.imgcontent();
var load:Loader=new Loader();
var mp:ParagraphElement = new ParagraphElement();
if (imgbyt!=null)
{
var div:DivElement = new DivElement(); //创建一个包含姓名和内容的div
var ns:SpanElement = new SpanElement();
var img:Image=new Image();
var Base64:Base64Encoder=new Base64Encoder;//将字符串或 ByteArray 编码为 Base64 编码的字符串。
Base64.encodeBytes(imgbyt);
imgst=Base64.toString();//输出为字符串
load.loadBytes(imgbyt);//读取ByteArray
load.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
function complete(event:Event):void {
bitMap=event.target.content as Bitmap;//读取Bitmap
img.source=new BitmapAsset(bitMap.bitmapData); }
ns.color = 0x008040; //自己名字的颜色
ns.text = model.employee.username+" "+df.format(new Date());
mp.addChild(ns);
div.addChild(mp);
// div.addChild(img);
contents.textFlow.addChild(div);
//contents.textFlow.addChild(img);
contents.validateNow();
contents.scroller.viewport.verticalScrollPosition=contents.scroller.viewport.contentHeight;
contents.validateNow();
contents.scroller.viewport.verticalScrollPosition=contents.scroller.viewport.contentHeight;
var mtf:TextFlow = new TextFlow();
mtf.addChild(mp.deepCopy());
var message:Message = new Message(); //new一条消息
message.sender = model.employee; //设置发送者为自己
message.receiver = employee; //设置接收者为对话人员
message.content = TextFlowUtil.export(mtf).children(); //设置消息内容
//分发消息发送事件
CairngormEventDispatcher.getInstance().dispatchEvent(
new MessageEvent(MessageEvent.SEND_EVENT, message)
);
editor.clear();
}
else
{
Prompt.show(this,"发送消息内容超长,请分条发送!","发送消息",Prompt.OK,null,"images/plaint.png");
}
editor.setEditorFocus();
}