Flexでファイルのアップローダーとダウンローダー
ちょいとFlexでファイルのアップローダーとダウンローダーをやってみました。
Flash10では自分が指定したファイルをFlash上で遊べるようです
今回は通常のFlash9でできるファイルのアップとダウンロードです。
こんな感じ
http://moeten.info/flex/20080518_fileReference/bin-release/main.html
#ファイルのアップロードサイズは1MB以内で
ソースはこちら
PHP
<?php //アップされたファイルを保存する。 $fname = "cache/" . $_FILES['Filedata']['name']; move_uploaded_file( $_FILES['Filedata']['tmp_name'] , $fname ); exit; ?>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFBCBC]"> <mx:Script> <![CDATA[ //ファイルアップロード private var uploadURL:URLRequest; private var file:FileReference; private function FileReference_upload():void{ uploadURL = new URLRequest(); //ファイルのアップロード先URL uploadURL.url = "http://moeten.info/flex/20080518_fileReference/test.php"; file = new FileReference(); file.addEventListener(Event.SELECT, selectHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.browse(); } //ファイルが選択されたとき private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); myLog.text += "selectHandler: name=" + file.name + " URL=" + uploadURL.url; file.upload(uploadURL); } //なんかIOエラーのとき private function ioErrorHandler(event:IOErrorEvent):void { myLog.text += "ioErrorHandler: " + event; } //アップロード中のとき private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); myLog.text += "progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal; } //アップロード完了したとき private function completeHandler(event:Event):void { myLog.text += "completeHandler: " + event; } //ファイルダウンロード private var downloadURL:URLRequest; private var fileName:String = "test.jpg"; public function FileReference_download():void{ downloadURL = new URLRequest(); //ダウンロードファイル downloadURL.url = "http://moeten.info/flex/20080518_fileReference/test.jpg"; file = new FileReference(); configureListeners(file); //初期ファイル名を指定 file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); // dispatcher.addEventListener(Event.SELECT, selectHandler); } //キャンセルしたとき private function cancelHandler(event:Event):void { myLog.text +="cancelHandler: " + event; } //よくわからないイベント private function openHandler(event:Event):void { myLog.text += "openHandler: " + event; } //なんかセキュリティエラーのとき private function securityErrorHandler(event:SecurityErrorEvent):void { myLog.text +="securityErrorHandler: " + event; } ]]> </mx:Script> <mx:Button x="398" y="36" label="ダウンロード" click="FileReference_download()"/> <mx:TextArea id="myLog" x="45" y="66" width="438" height="430" alpha="0.54"/> <mx:Button x="45" y="36" label="アップロード" click="FileReference_upload()"/> </mx:Application>