▼ActionScript 3.0メモ▼
ファイルのアップロード
ファイルのアップロードを行うFlashを作成する。
ソースコード - 1ファイル版
FileReferenceEx.as package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; //ファイルのアップロード [SWF(width=240, height=240, backgroundColor=0xFFFFFF)] public class FileReferenceEx extends Sprite { private var label:TextField; private var fileRef:FileReference; //コンストラクタ public function FileReferenceEx() { //ラベルの生成 label=makeLabel("FileReferenceEx\n\n"); addChild(label); //ファイルリファレンスの生成 fileRef=new FileReference(); fileRef.addEventListener(Event.SELECT, function(e:Event):void{ var request:URLRequest=new URLRequest( "http://localhost/sample/upload.php"); request.method=URLRequestMethod.POST; fileRef.upload(request,"Filedata"); }); fileRef.addEventListener(Event.COMPLETE, function(e:Event):void{ label.appendText("Complete\n"); }); fileRef.addEventListener(IOErrorEvent.IO_ERROR, function(e:Event):void{ label.appendText("IOError\n"); }); fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(e:SecurityErrorEvent):void{ label.appendText("SecurityError\n"); }); fileRef.browse(); } //ラベルの生成 private function makeLabel(text:String):TextField { var label:TextField=new TextField(); label.text =text; label.autoSize =TextFieldAutoSize.LEFT; label.selectable=false; return label; } } }
ソースコード - 複数ファイル版
FileReferenceListEx.as package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; //複数ファイルのアップロード [SWF(width=240, height=240, backgroundColor=0xFFFFFF)] public class FileReferenceListEx extends Sprite { private var label:TextField; private var fileRefList:FileReferenceList; //コンストラクタ public function FileReferenceListEx() { //ラベルの生成 label=makeLabel("FileReferenceListEx\n\n"); addChild(label); //ファイルリファレンスの生成 fileRefList=new FileReferenceList(); fileRefList.addEventListener(Event.SELECT,onSelect); fileRefList.browse(); } //ラベルの生成 private function makeLabel(text:String):TextField { var label:TextField=new TextField(); label.text =text; label.autoSize =TextFieldAutoSize.LEFT; label.selectable=false; return label; } //選択イベントの処理 private function onSelect(evt:Event):void { var request:URLRequest=new URLRequest( "http://localhost/sample/upload.php"); request.method=URLRequestMethod.POST; var fileRef:FileReference; for (var i:int=0;i<fileRefList.fileList.length;i++) { fileRef=FileReference(fileRefList.fileList[i]); fileRef.addEventListener(Event.COMPLETE, function(e:Event):void{ label.appendText("Complete\n"); }); fileRef.addEventListener(IOErrorEvent.IO_ERROR, function(e:Event):void{ label.appendText("IOError\n"); }); fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(e:SecurityErrorEvent):void{ label.appendText("SecurityError\n"); }); fileRef.upload(request,"Filedata"); } } } }
サーバ
http://local/samples/フォルダに配置し、imagesとtemporaryフォルダを準備。
upload.php <?php $MAXIMUM_FILESIZE =1024*200;//最大ファイルサイズ //最大ファイルサイズチェック if ($_FILES['Filedata']['size']<=$MAXIMUM_FILESIZE) { //ファイル種別チェック move_uploaded_file($_FILES['Filedata']['tmp_name'], "./temporary/".$_FILES['Filedata']['name']); $type=exif_imagetype("./temporary/".$_FILES['Filedata']['name']); //ファイル移動 if ($type == 1 || $type == 2 || $type == 3) { rename("./temporary/".$_FILES['Filedata']['name'], "./images/".$_FILES['Filedata']['name']); } else { unlink("./temporary/".$_FILES['Filedata']['name']); } }