AS3でByteArrayをPHPに渡して保存するメモ
ここでも紹介されているけど、AS3でバイナリーデータをサーバに保存する方法を極力単純化してメモ。
AS3の抜粋。
req.contentType = 'application/octet-stream';
が大切
private function sendObjectPHP():void{
var obj:Object ={val1:123,val2:"test"}
var byteArr:ByteArray = new ByteArray
byteArr.writeObject(obj)
byteArr.position = 0;
var req:URLRequest = new URLRequest();
var loader:URLLoader = new URLLoader();
req.url = 'saveBinary.php';
req.contentType = 'application/octet-stream';
req.method = URLRequestMethod.POST;
req.data = byteArr;
loader.addEventListener(Event.COMPLETE,loadComplete)
loader.load(req)
function loadComplete(e:Event):void{
trace("complete")
}
}
phpソース
$bin = file_get_contents("php://input");
$path = dirname(__FILE__);
$tmpfname = tempnam($path,'dat_');
unlink($tmpfname);
$tmpfname = $tmpfname . '.bin';
$fp = fopen($tmpfname, 'wb');
fwrite($fp, $bin);
fclose($fp);
これで「dat_hogehoge.bin」ファイルが生成。バイナリエディタで見ると
val1:123
val2:"test"
が確認できる。
zipファイルはコチラhttp://memo.kappa-lab.com/samples/sendBinaryToPHP.zip