【问题标题】:PNG occasionally loses data on way from Flash to serverPNG 偶尔会在从 Flash 到服务器的过程中丢失数据
【发布时间】:2012-07-09 16:30:27
【问题描述】:

我们对此感到困惑,希望得到一些帮助!

我们的用户正在 Flash 中创建 TIF,并通过 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;

【问题讨论】:

  • 知道这可以节省流量,但我不确定它是否会导致偶尔的传输失败。我们使用的包:com.adobe.images.PNGEncoder;和 com.hurlant.util.Base64;
  • 缓存问题很有趣。我会调查的。您是否推荐一种更可靠的方式从 Flash 传输图像数据?如果有帮助,我很乐意更改它!

标签: flash png


【解决方案1】:

我能想象的唯一原因(假设您使用的每个库都工作正常)是 base64 符号是 urlencoded 但不是 urldecoded。 Base64 有“+”,它将在传输后进行 urlencoded,我不确定这个 ASPX 库是否自己进行 urldecode。即使是几个字节的随机数据,这种情况下的错误概率也高于 1/25。但可能是您使用的是小尺寸的非随机测试数据。

【讨论】:

  • 相同的 PNG 可以发送,第一次失败但第二次通过。这让我觉得这与 Base64 编码无关,不是吗?
猜你喜欢
  • 2013-02-19
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多