본문 바로가기

ActionScript/AS3.0

FileReferenceList 클래스를 이용한 multi_Upload

출처 What you see is what you get | 아킨토스
원문 http://blog.naver.com/etwas0227/60035421007
[플래시] FileReferenceList 클래스를 이용한 multi_Upload

 

-----------------------------------------------------------------------------------------

 

--> multi_Upload.fla

 

import flash.net.FileReference;
import flash.net.FileReferenceList;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
// 파일열기 탐색창에서 파일형식에 보여지는 문자열 입니다.
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
// 업로드 할 수 있는 파일의 형식 입니다.
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);
// 업로드 할려고 하는 파일의 이름을 기억하는 새로운 배열을 선언 합니다.
var fileList:Array = new Array();
var fileRef:FileReferenceList = new FileReferenceList();
//
var upLis:Object = new Object();
upLis.onSelect = function(fileRefList:FileReferenceList):Void  {
 fileList = fileRefList.fileList;
 var item:FileReference;
 var filename:String = "";
 var len = fileList.length;
 // 업로드 되는 파일 이름을 하나의 문자열을 만듭니다.
 for (var i:Number = 0; i<len; i++) {
  item = fileList[i];
  filename += item.name+", ";
 }
 var filenameStringLength:Number = filename.length;
 // 가장 마지막의 ",  " 문자열을 없애기 위해 문자열의 마지막 2 개를 제외한 문자을 보여주게 합니다.
 filename_txt.text = filename.substr(0, filenameStringLength-2);
 //
 fileUpload(fileList[itemUploadIndex]);
};
upLis.onOpen = function(file:FileReference):Void  {
 // 프리 업로딩바를 보여줍니다.
 attachLodaingBar();
};
upLis.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void  {
 // 파일 업로드가 진행되는 상태를 보여 줍니다.
 showLoaded(bytesLoaded, bytesTotal);
};
upLis.onComplete = function(file:FileReference):Void  {
 itemUploadIndex++;
 var totalLength = fileList.length;
 //  업로드 된 파일의 갯수와 전체 업로드 할 파일의 갯수가 같다면 프리 업로딩바를 제거 해 줍니다.
 if (totalLength == itemUploadIndex) {
  removeLoadingBar();
 } else {
  // 그렇지 않다면 다음 파일을 업로드 합니다.
  fileUpload(fileList[itemUploadIndex]);
 }
};
//
fileRef.addListener(upLis);
// 
function fileUpload(item:FileReference):Void {
 item.addListener(upLis);
 item.upload("getFile.php");
}
//
function attachLodaingBar():Void {
 var preloadingBar_mc = this.attachMovie("loadingBar", "preLoading_mc", 1);
 // 투명 버튼의 핸드커서를 안 보이게 해 줍니다.
 preloadingBar_mc.trans_btn.useHandCursor = false;
 // 프리 업로딩바의 최초 스케일이 처음부터 보여주기 위해 1% 로 설정 합니다.
 preloadingBar_mc.bar_mc._xscale = 1;
 preLoading_mc.str_txt.text = itemUploadIndex+" / "+fileList.length;
}
function showLoaded(l:Number, t:Number):Void {
 // 로딩 되는 것을 백분율로 보여주기 위한 공식 입니다.
 var percent = Math.floor(l/t*100);
 preLoading_mc.bar_mc._xscale = percent;
}
function removeLoadingBar():Void {
 preLoading_mc.removeMovieClip();
}
//
upload_btn.onRelease = function() {
 // 업로드 되는 파일의 인덱스 입니다.
 itemUploadIndex = 0;
 fileRef.browse(allTypes);
};

-----------------------------------------------------------------------------------------

 

--> multi_Upload.php


<?php

 $uploadfile = "./uploadFile/" . basename($HTTP_POST_FILES['Filedata']['name']);
 $uploadfile = iconv("UTF-8","euc-kr", $uploadfile);
 @move_uploaded_file($HTTP_POST_FILES['Filedata']['tmp_name'], $uploadfile);

?>

 

-----------------------------------------------------------------------------------------

 

--> multi_Upload.html

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>multi_Upload</title>
<script language="javascript">AC_FL_RunContent = 0;</script>
<script src="AC_RunActiveContent.js" language="javascript"></script>
</head>
<body bgcolor="#ffcc00">
<!--url's used in the movie-->
<!--text used in the movie-->
<!--
<p align="left"></p>
-->
<!-- saved from url=(0013)about:internet -->
<script language="javascript">
 if (AC_FL_RunContent == 0) {
  alert("This page requires AC_RunActiveContent.js. In Flash, run \"Apply Active Content Update\" in the Commands menu to copy AC_RunActiveContent.js to the HTML output folder.");
 } else {
  AC_FL_RunContent(
   'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
   'width', '400',
   'height', '400',
   'src', 'multi_Upload',
   'quality', 'high',
   'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
   'align', 'middle',
   'play', 'true',
   'loop', 'true',
   'scale', 'showall',
   'wmode', 'window',
   'devicefont', 'false',
   'id', 'multi_Upload',
   'bgcolor', '#333333',
   'name', 'multi_Upload',
   'menu', 'true',
   'allowScriptAccess','sameDomain',
   'movie', 'multi_Upload',
   'salign', ''
   ); //end AC code
 }
</script>
<noscript>
 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="400" id="multi_Upload" align="middle">
 <param name="allowScriptAccess" value="sameDomain" />
 <param name="movie" value="multi_Upload.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#333333" /> <embed src="multi_Upload.swf" quality="high" bgcolor="#333333" width="400" height="400" name="multi_Upload" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="
http://www.macromedia.com/go/getflashplayer" />
 </object>
</noscript>
</body>
</html>

-----------------------------------------------------------------------------------------

소스 출처: www.adobe.com

 

 

클래스 참고: http://livedocs.macromedia.com/flex/2/langref/flash/net/FileReference.html


'ActionScript > AS3.0' 카테고리의 다른 글

Focus selected shape  (0) 2008.03.24
모든 마우스 리스너 삭제  (0) 2008.03.24
[as3.0] CAM화면 FLV로 서버에 저장하기  (1) 2008.03.24
[AS3] SWC 로 폰트 가볍게 Embed 하기  (1) 2008.03.18
PaperVision3D-튜트리얼  (0) 2008.03.17