Flexでファイルのアップやphpとの通信

phpとの通信を前々からやってみたかったのでやってみました。
画像をアップすると画像が追加されます。
今は単純に画像をフォルダに置くだけなので今後はデーターベースに格納して、ユーザーごとに画像の管理ができるようにしてみようと思います。
前問題だった画像のドラッグが後輩の助けによってできました。
今度は重なりの順番を変更したいです。
http://moeten.info/hatena/20071114_fileup/bin/main.html

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  viewSourceURL="srcview/index.html" creationComplete="get_image()">
<mx:Style>
.my{
    borderColor: #b7babc;
    borderThickness: 2;
    dropShadowEnabled: true;
    backgroundColor:#ffffff;
    borderColor:#ff80ff;
    cornerRadius:3;
    themeColor:#ff80ff;
    borderStyle:solid;
}
</mx:Style>
<mx:Script>
    <![CDATA[
import mx.effects.Resize;
import mx.events.DragEvent;
import mx.core.DragSource;
import mx.core.UIComponent;
import mx.core.IFlexDisplayObject;
import mx.managers.DragManager;
import mx.containers.Canvas;
import mx.controls.Image;
import mx.effects.Rotate;
import mx.effects.Move;
import mx.effects.Effect;
public var myXML:XML;
public var myLoader:URLLoader;
public function initApp():void{
    //ファイルタイプの絞りこみ
    var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
    var textTypes:FileFilter = new FileFilter("Text Files (*.txt, *.rtf)", "*.txt; *.rtf");
    var allTypes:Array = new Array(imageTypes, textTypes);
    //ファイル選択
    var fileRef:FileReference = new FileReference();
    fileRef.browse(allTypes);
    fileRef.addEventListener(Event.SELECT, selectHandler);
    fileRef.addEventListener(Event.COMPLETE, completeHandler);
    try{
        var success:Boolean = fileRef.browse();
    }catch (error:Error){
        myLog.text ="Unable to browse for files.";
    }
    function selectHandler(event:Event):void{
        //画像をPOSTで送る場所
        var request:URLRequest = new URLRequest("http://moeten.info/hatena/20071114_fileup/index.php")
        try{
            fileRef.upload(request);
        }catch (error:Error){
            myLog.text ="Unable to upload file.";
        }
    }
    function completeHandler(event:Event):void{
        myLog.text = "uploaded";
        //アップロードできたのでファイルゲット。
        get_image();
    }
}
//カラーピッカーが設定されたら呼び出される関数
private function get_image():void{
    myXML = new XML();
    //XMLの取得
    var XML_URL:String = "http://moeten.info/hatena/20071114_fileup/index.php?type=xml&nocach="+Math.round( Math.random()*200 );
    var myXMLURL:URLRequest = new URLRequest(XML_URL);
    myLoader = new URLLoader(myXMLURL);
    myLoader.addEventListener("complete", xmlLoaded);
}
//XMLローダー
public var i:int = 0;
public function xmlLoaded(evtObj:Event):void {
    myXML = XML(myLoader.data);
    for( i = 0 ; i < myXML.item.length(); i ++ ){
        add_image( myXML.item[i].img );
        myLog.text += "" + myXML.item[i].img + "\n";
    }
}
public var rotate_a:Array = new Array();
public function add_image(url:String):void{
    //キャンバスの作成
    var mycanvas:Canvas = new Canvas();
    mycanvas.width = 200;
    mycanvas.height = 200;
    mycanvas.horizontalScrollPolicy = "off";
    mycanvas.verticalScrollPolicy = "off";
    mycanvas.x = Math.round( Math.random()*200 );
    mycanvas.y = Math.round( Math.random()*200 );
    mycanvas.styleName = "my";
    //画像の作成
    var image:Image = new Image();
    image.source = url;
    image.width = 240;
    image.height = 240;
    image.enabled = false;
    //画像にもイベントリスナー
    image.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown ,true);
    image.addEventListener(MouseEvent.MOUSE_UP,onMouseUp, true);
    mycanvas.alpha = 0.5;
    //ステージにアッド
    mycanvas.addChild(image);
    //キャンバスにもイベントリスナー
    mycanvas.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
    mycanvas.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
    this.addChild(mycanvas);
    //ムーブ
    var move:Move = new Move();
    move.target = mycanvas;
    move.yTo = Math.round( Math.random()*200 )+100;
    move.xTo = Math.round( Math.random()*500 )+100;
    move.duration = 1000;
    move.play();
    //回転
    var rotate:Rotate = new Rotate();
    rotate.originX = -50;
    rotate.originY = -50;
    rotate.duration = 1000;
    rotate.target = mycanvas;
    rotate.angleFrom = Math.round( Math.random()*100 );
    var angleTo:int = Math.round( Math.random()*100 );
    rotate.angleTo = angleTo;
    rotate_a[i] = angleTo;
    rotate.play();
}
//ドラッグ関係(未だ勉強中
public function onMouseDown(event:MouseEvent):void {
    event.currentTarget.alpha = 1.0;
    event.currentTarget.startDrag();
    var resize:Resize = new Resize();
    resize.target = event.currentTarget;
    resize.widthFrom = 150;
    resize.widthTo = 200;
    resize.heightFrom = 150;
    resize.heightTo = 200;
    resize.duration = 100;
    resize.play();
    //回転
    var rotate:Rotate = new Rotate();
    rotate.duration = 10;
    rotate.target = event.currentTarget;
    rotate.play();
    //parent.setChildIndex( this , parent.numChildren - 1);
}
//ドラッグ中の更新
public function onMouseMove(event:MouseEvent):void {
}
//ドラッグ終了
public function onMouseUp(event:MouseEvent):void {
    event.currentTarget.stopDrag();
    var resize:Resize = new Resize();
    resize.target = event.currentTarget;
    resize.widthFrom = 200;
    resize.widthTo = 150;
    resize.heightFrom = 200;
    resize.heightTo = 150;
    resize.play();
    event.currentTarget.alpha = 0.5;
}
]]>
</mx:Script>
    <mx:TextArea x="80" y="103" id="myLog" width="242" height="157" />
    <mx:Button x="80" y="45" label="ファイルアップ!" click="initApp()"/>
</mx:Application>

Flex部分は画像の送信と表示となっています。
その画像の受けざらをphpで作成します。
今回は単純に画像をゲットして、特定のフォルダに入れています。
また、type=xmlとすることでフォルダのリストをxmlで表示します。
これをつかってFlex側で画像を表示します。

<?php
if( $_GET['type'] == "" ){
    //送られてきたデーターをゲットして格納する。
    $file = date('y-m-d-h-s.jpg');
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./images/{$file}");
 }elseif( $_GET['type'] == "xml" ){
     //ディレクトリを読んでそれをXMLで出力する。
     $directory = opendir('./images/');
     $files = array();
     header ("Content-Type: text/xml; charset=UTF-8");
     $xml = <<<EOD
<result>
EOD;
     while ($file = readdir($directory)){
         if( $file != ".." && $file != "." ){
             $file;
             $xml .= <<<EOD
<item>
<img>http://moeten.info/hatena/20071114_fileup/images/{$file}</img>
</item>
EOD;
         }
     }
     $xml .= <<<EOD
</result>
EOD;
     echo mb_convert_encoding( $xml , "UTF-8" , "SJIS" );
     exit;
 }
exit;
?>