2011-08-23 49 views
0

我想利用PNGncoder与dynamicfash Base64向PHP发送一个Base64字符串并保存PNG文件,但由于某种原因,我不知道,PNG文件是从来没有可读。它在那里,并有一个大小(包含数据),但不能被任何东西打开,所以不是一个有效的PNG文件。这里是我的代码...Flash AS3 PNGEncoder与Base64和PHP不工作

var target:MovieClip = new MovieClip(); 
target.graphics.beginFill(0xff0000,5.0); 
target.graphics.drawRect(0,0,100,100); 
target.graphics.endFill(); 

var bdata:BitmapData = new BitmapData(100, 100);    
bdata.draw(target); 
var stream:ByteArray = PNGEncoder.encode(bdata);    
var byteArrayAsString:String = Base64.encodeByteArray(stream); 

var request:URLRequest = new URLRequest("pngsave.php"); 
request.method = URLRequestMethod.POST; 
var variables:URLVariables = new URLVariables(); 
variables.fileName = "testing.png"; 
variables.image = byteArrayAsString; 
request.data = variables; 
navigateToURL(request, "_blank"); 

和PHP代码...

<?php 
header('Content-Type: image/png'); 
header("Content-Disposition: attachment; filename=".$_POST['fileName']); 

echo base64_decode($_POST["image"]); 
?> 

任何想法对我做错了什么在这里?

+0

没有“AS3 PNGEncoder”,也没有“AS3 Base64”。你在用什么库? Base64的一些实现是不同的,有时在开始/结束时有标记。 –

+0

我使用[as3corelib](https://github.com/mikechambers/as3corelib)中的AS3 PNGEncoder和[dynamicflash.util]中的Base64(https://github.com/spjwebster/as3base64/blob/ master/src/com/dynamicflash/util/Base64.as)对不起,我以前没有指定。 – Matt

+0

如果你做Base64.encode('test')和echo base64_encode('test'),他们会返回相同的东西吗? –

回答

0

使用FlashPlayer 10(其采用率> 95%),您不需要将png数据发送到php页面。改用FileReference.save()

+0

我现在这样做,因为我只是想快速打开文件,看看它是否正确,但将来我想将它保存到服务器...我仍然可以使用FileReference.save()吗?另外我使用CS3,所以我似乎没有.save方法..有无论如何更新,或者我需要移动到CS4或5? – Matt