我正在使用Open Flash Chart 2创建一些图表。我希望能够保存图形的图像,OFC2 提供了一些方法来实现这一点。我使用OFC2站点上的示例直接在页面上显示原始图像数据,但这在我们大多数用户正在使用的IE6中不起作用(我知道,我知道)。
我切换到使用 OFC2 方法,post_image
将原始图像数据发布到服务器。我使用 Perl 脚本接收图像数据,将其保存到文件中,然后我可以查看图像。使用该post_image
方法的不幸之处在于,ActionScript 在保存图像时会引发错误:错误 #2101:传递给 URLVariables.decode() 的字符串必须是包含名称/值对的 URL 编码查询字符串。
这显然是 Adobe 中的一个错误 - 请参阅此页面。由于这个错误,该post_image
方法没有成功完成,所以javascript回调永远不会触发——我基本上没有办法判断图像是否保存成功。
所以,我想我会使用get_img_binary
OFC2的方法来获取图像的二进制数据,并使用jQuery将二进制数据发布到我的Perl脚本中。
我无法弄清楚如何正确发送二进制数据,或者如何让我的 Perl 脚本正确接收二进制数据,或者两者兼而有之。
这是我的 jQuery 函数:
var chartObj = $("#chart_object").get(0);
$.ajax({
type: "POST",
url: 'download_image.pl',
//contentType: 'application/octet-stream',
contentType: 'image/png',
//processData: false,
//data: { imgData: chartObj.get_img_binary() },
data: chartObj.get_img_binary(),
dataType: "text",
success: function(data) {
console.log( data );
}
});
您可以从我注释掉的一些行中看到,我尝试了 Ajax 调用的各种 contentTypes 和其他设置。
Ajax 调用正在发送一些数据,但它似乎不是二进制的。我认为它是二进制数据的 base64 表示。
有人对如何将二进制数据从 javascript 发送到服务器有任何想法吗?
我拥有的 Perl 脚本适用于该post_image
方法,所以我认为不存在问题吗?
提前致谢!