Welcome

首页 / 软件开发 / Flex / Flex与.NET互操作(十五)

Flex与.NET互操作(十五)2011-07-11 博客园 BeniaoFlex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传

前几天一位朋友问我一个问题,他说:“我用HTTP接口或是WebService接口可以实现图片上传功能,那么用FluorineFx如何实现图片 上传功能呢?”,其实仔细看官方文档和示例程序的自己都可以找到答案,实现上传可以有很多种实现,这里我以官方所提供是示例为基 础稍加改动,通过ByteArray类实现图片上传。

首先建立FluorineFx库和网站,在远程服务器类里添加一个处理文件上传的方法,详细 代码如下:

namespace ByteStream.Services
{
[RemotingService]
public class ByteStreamService
{
public ByteArray UploadImage(ByteArray ba)
{
MemoryStream ms = new MemoryStream(ba.GetBuffer());
Image img = Bitmap.FromStream(ms);

Bitmap newImage = new Bitmap(img);

MemoryStream tempStream = new MemoryStream();
newImage.Save(tempStream, System.Drawing.Imaging.ImageFormat.Png);
string path = HttpContext.Current.Server.MapPath ("UpLoad/ByteArray.png");
FileStream fs = new FileStream(path, FileMode.Create);
tempStream.WriteTo(fs);
fs.Close();

ByteArray result = new ByteArray(tempStream);
return result;
}
}
}

处理图片上传的方法通过把flex客户端传递来的字节数组包装为内存流,然后通过写文件的形式将图片保存到指定的目 录下。示例中提供了一个画图板,用户可以通过选择颜色自画不同的图象,然后保存到服务器上指定的目录。画图板的实现是根据鼠标按下的 移动路线做的,代码如下:

private function doMouseDown():void
{
x1 = myCanvas.mouseX;
y1 = myCanvas.mouseY;
isDrawing = true;
}
private function doMouseMove():void
{
x2 = myCanvas.mouseX;
y2 = myCanvas.mouseY;
if (isDrawing)
{
myCanvas.graphics.lineStyle(2, drawColor);
myCanvas.graphics.moveTo(x1, y1);
myCanvas.graphics.lineTo(x2, y2);
x1 = x2;
y1 = y2;
}
}
private function doMouseUp():void
{
isDrawing = false;
}
//清空画图板
private function onErase (event:MouseEvent):void
{
myCanvas.graphics.clear();
}