在我的项目中,我们需要使用 flex 4.6 将网络摄像头拍摄的图像保存在默认路径中,但在 flex 中提供默认路径(将图像保存在 C:\temp.. 等默认路径中)是不可能的,因此我们正在传递捕获的图像的字节数组从 flex 到 .net 中的 .ashx 页面,图像保存在默认路径中,但 imagebytes 没有保存(显示图像中没有数据)。如果有人知道,请告诉我。
问问题
291 次
1 回答
1
最后,我成功地将图像字节从 flex 传递到 ashx 页面,如下所示
//Declare a string in script tag(Initialize a string before init() )
[Bindable]public var str64enc:String="";
//creating object for bytearray
[Bindable]public var imgbytes:ByteArray=new ByteArray();
//creating object for bitmapdata
[Bindable]public var picture1:BitmapData=new BitmapData(103,103,true);
**In your code**
var png:PNGEncoder=new PNGEncoder();
imgbytes=png.encode(picture1);
var base64enc:Base64Encoder=new Base64Encoder();
base64enc.encodeBytes(imgbytes);
str64enc=base64enc.toString();
分步程序:--------
1-采用 base64encoder 并对字节数组进行编码,如下所示:
var base64enc:Base64Encoder=new Base64Encoder();
base64enc.encodeBytes(imgbytes);
2-然后将该base64编码器对象(在本例中为“base64enc”)分配给字符串
3-在 HTTPSERVICE 中,您需要传递该字符串,例如:
<mx:HTTPService id="savepcktdata" method="POST"
url="ur's destination path like..(axis/security/security.aspx)"
result="savepcktdata_resultHandler(event)"
resultFormat="text">
<mx:request>
<Operation>savepcktdata</Operation>
<bytes>
{str64enc}
</bytes>
</mx:request>
</mx:HTTPService>
4-在 .aspx 页面中,您需要检索如下:
string str = Convert.ToString(Request.Form["bytes"]);
结论:为了将图像字节从 flex(flash builder 4.6) 传递到 dotnet (visual studio),您需要像上面的代码一样通过 base64 字符串。
以下是与此问题相关的有用链接
如何将图像从 flex 应用程序传递到 asp net c# web 服务?asp-net-c-sharp-web 服务
于 2013-11-20T11:53:25.300 回答