PNG偶尔会丢失从闪存到服务器的数据

问题描述:

我们一直在为此付出沉重的代价,并希望得到一些帮助!PNG偶尔会丢失从闪存到服务器的数据

我们的用户在Flash中创建TIFS,并通过HTTP POST以Base64发布的图像数据,与接收它的ASPX服务器:

byte[] bytes = Convert.FromBase64String(Request.Form["ImgData"] ); 

我们发现这个方法的作品,但在20-30一个或者如此情况,服务器收到的数据量与客户声称发送的数据量不同。 ASPX代码:

dataLengthSentFromClient = Request.Form["dataLengthFromClient"].ToString(); 
<> 
ReceivedBytesLength=Request.Form["ImgData"].Length.ToString(); 

但其他24次它似乎工作正常。有任何想法吗?我们是不是应该以这种方式将数据从Flash传递到服务器?


(这是客户端的AS代码) var image:BitmapData;

if (toTrim) { 
tempBitmapData=new BitmapData(workingSrc.width,workingSrc.height,true,0x00000000); 
tempBitmapData.draw(workingSrc); 
var tempBitmap:Bitmap=new Bitmap(tempBitmapData,PixelSnapping.ALWAYS,true); 
bounds=tempBitmapData.getColorBoundsRect(0xFF000000,0x00000000,false); 
var letterMatrix:Matrix=new Matrix(1,0,0,1,- bounds.x,- bounds.y); 
tempBitmap.transform.matrix=letterMatrix; 
image=new BitmapData(bounds.width,bounds.height,true,0x00000000); 
image.draw(tempBitmap,letterMatrix); 
} else { 
image=new BitmapData(workingSrc.width,workingSrc.height,true,0x00000000); 
image.draw(workingSrc,letterMatrix); 
} 


var bytes:ByteArray=PNGEncoder.encode(image); 
var base64Bytes:String=Base64.encodeByteArray(bytes); 

var vars:URLVariables = new URLVariables(); 
vars.activityID=activityID; 
vars.imgData=base64Bytes; 
vars.dataLengthFromSarah=vars.imgData.length; 
vars.activityLocation=activityLoc; 
vars.op="writePNG"; 
if (fileName!=null) { 
vars.filename=fileName; 
} 
// Save info about the variables passed in case we need to dump error data 
dispatchEvent(new DumpPrepEvent(vars.toString())); 

var url:URLRequest=new URLRequest(INTERFACE); 
url.data=vars; 
url.method=URLRequestMethod.POST; 
+0

这是很好的知道,以节省流量,但我不知道它是否导致偶尔的转移失败。我们使用的软件包: 和 和com.hurlant.util.Base64; – user1512545 2012-07-13 04:02:14

+0

缓存问题很有趣。我会研究这一点。你推荐一种更可靠的方式从Flash传输图像数据?如果有帮助,我很乐意改变它! – user1512545 2012-07-13 20:01:23

唯一的原因,我能想象(假设每次使用作品的权利库)是的base64符号url编码,但不urldecoded。 Base64有'+'在post传输过程中会被urlencoded,我不确定这个ASPX库是否自己实现了urldecode。在这种情况下,即使对于几个字节的随机数据,错误的概率也高于1/25。但它可能是你使用小尺寸的非随机测试数据。

+0

相同的PNG可以发送并且第一次失败,但是第二次通过。这让我认为这与Base64编码无关,不是吗? – user1512545 2012-07-13 04:01:22