(26)S2Flex2画像パレット FileUploadの作成

ファイルアップロードの部分は、fxugで見っけました。
ほぼそのままです。フレームワークに乗っからないので、Helperクラスで全部やってしまいました。
あまりすっきりしません。

package imagepicker.imagemanage.helper
{
    import imagepicker.common.helper.CommonViewHelper;
    import imagepicker.imagemanage.event.ImageSelectAllEvent;
    import imagepicker.imagemanage.event.ImageSelectEvent;
    import flash.net.FileReference;
    import flash.net.URLRequest;
    import flash.events.IOErrorEvent;
    import flash.events.SecurityErrorEvent;
    import flash.events.Event;
    import mx.events.CloseEvent;
    import mx.controls.Alert;
    import com.adobe.cairngorm.control.CairngormEventDispatcher;
    public class ImageListHelper extends CommonViewHelper{
        public function onTileList():void{
            // viewstackの切り替え
            view.parentDocument.vsImageManage.selectedChild = view.parentDocument.vsImageDetail;
            var fileName : String = view.tllImageList.selectedItem.imagename;
            var title : String = view.tllImageList.selectedItem.title;
            var tags : String = view.tllImageList.selectedItem.tags;
            view.parentDocument.imageDetail.imgPicture.load("http://localhost:8080/imagepicker/bin/images/"+fileName);
            view.parentDocument.imageDetail.strImageid = view.tllImageList.selectedItem.imageid;
            view.parentDocument.imageDetail.strImagename = view.tllImageList.selectedItem.imagename;
            view.parentDocument.imageDetail.txtTitle.text = title;
            view.parentDocument.imageDetail.txaTags.text = view.tllImageList.selectedItem.tags;
        }
        public function doUpload() :void{
            // アップロード
            uploadImage();
        }
        public function selectAll() :void{
            // 画像全件検索
            CairngormEventDispatcher.getInstance().dispatchEvent( new ImageSelectAllEvent() );
        }
        public function select():void{
            // 画像検索
            CairngormEventDispatcher.getInstance().dispatchEvent( new ImageSelectEvent(view.txtSearch.text) );
        }
        private var file:FileReference;
        public override function init():void{
            file = new FileReference();
            file.addEventListener("select", fileSelected);
            file.addEventListener("complete", fileUploaded);
            file.addEventListener(flash.events.IOErrorEvent.IO_ERROR , ioErrorHandler);
            file.addEventListener(flash.events.SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        }
        private function ioErrorHandler(e:IOErrorEvent):void{
            Alert.show(e.text);
        }
        private function securityErrorHandler(e:SecurityErrorEvent):void{
            Alert.show(e.text);
        }
        private function uploadImage():void{
            //file.browse([{description:"Images only, please", extension:"*.jpg;*.jpeg;*.gif;*.png"}]);
            file.browse();
        }
        private function fileSelected(e:Event):void{
            Alert.show("Upload " + file.name + " ("+Math.round(file.size/1024)+"KB)?",
            "Upload Confirmation",
            Alert.YES|Alert.NO,
            null,
            proceedWithUpload);
        }
        /**
         * アップロード。
         */
        private function proceedWithUpload(e:CloseEvent):void{
            if (e.detail == Alert.YES){
                var urlRequest:URLRequest = new URLRequest("http://localhost:8080/imagepicker/upload");
                file.upload(urlRequest,"filedata",false);                    
            }
        }
        private function fileUploaded(e:Event):void{
            selectAll();
        }
    }
}

次回は、Commandクラスを実装します。