2012-05-10 13 views
3

現在、FileReferenceを使用してファイルを選択して表示してサーバーにアップロードするswfがあります。これは素晴らしい作品ですが、私は選択し、複数(場合によっては25まで)を表示し、最後にそれらをすべてアップロードすることができる必要があります。Flash AS3 FileReference - 複数のファイルを一度に1つずつ選択してアップロードする

FileReferenceListを使用してダイアログポップアップで同時に複数のファイルを選択できますが、私の問題はユーザーが一度に1つずつ選択し、そのイメージに追加してから別のものを選択し、それで...最後にアップロードを押すと、それらをすべてサーバーにアップロードします。

新しい選択されたすべてのファイルを配列に追加して、最終的に配列内のすべてのファイルを1つの移動先にアップロードするか、アレイは完成しましたか?

誰でも手助けできますか?私は下の私の作業単一ファイルのアップロードのための完全なコードを投稿します。

、私はフラッシュ付き限定だと3~4ヶ月のための学習されていると私は今:(

ローレン

AS3コード週間以上にわたって立ち往生してきた、助けてくださいしてください。

import flash.display.Sprite; 
import flash.events.MouseEvent; 
import flash.net.FileReference; 
import flash.net.FileFilter; 
import flash.utils.ByteArray; 
import flash.events.MouseEvent; 
import flash.events.Event; 
import flash.events.IOErrorEvent; 
import flash.display.MovieClip; 
import fl.controls.ProgressBarMode; 
import flash.display.Bitmap; 
import flash.display.BitmapData; 

progressBar.visible=false; 
UploadprogressBar.visible=false; 

// Create FileReference. 
var imageFile:FileReference; 

// Create Loader to hold image content 
var image_loader:Loader = new Loader(); 
var image_content:Sprite = new Sprite(); 

// Get Extension Function. 
var imageExtension; 

function getExtension($url:String):String { 
    var extension:String = $url.substring($url.lastIndexOf(".")+1, $url.length); 
    return extension; 
} 

// Random Number Function to create new filename on server. 
function randomNum(low:Number=0, high:Number=1):Number { 
return Math.floor(Math.random() * (1+high-low)) + low; 
} 
var myNumber:Number= randomNum(1000,9999); 
var myString:String= String(myNumber); 
var RandomNumbers = myString; 
var imageFilePath = (RandomNumbers); 

// Select Button Function. 
select_btn.addEventListener(MouseEvent.CLICK, onselect_btnClicked); 

function onselect_btnClicked(event:MouseEvent):void { 
imageFile=new FileReference(); 
imageFile.addEventListener(Event.SELECT, onFileSelected); 
var imageTypeFilter:FileFilter = new FileFilter("JPG/PNG Files","*.jpeg; *.jpg;*.gif;*.png"); 
imageFile.browse([imageTypeFilter]); 
} 

// File Selected Function. 
function onFileSelected(event:Event):void { 
imageFile.addEventListener(Event.COMPLETE, onFileLoaded); 
imageFile.addEventListener(ProgressEvent.PROGRESS, onProgress); 
var imageFileName = imageFile.name; 
imageExtension = getExtension(imageFileName); 
imageFile.load(); 

progressBar.visible=true; 
progressBar.mode=ProgressBarMode.MANUAL; 
progressBar.minimum=0; 
progressBar.maximum=100; 
UploadprogressBar.mode=ProgressBarMode.MANUAL; 
UploadprogressBar.minimum=0; 
UploadprogressBar.maximum=100; 
} 

// File Progress Function. 
function onProgress(event:ProgressEvent):void { 
var percentLoaded:Number=event.bytesLoaded/event.bytesTotal*100; 
progressBar.setProgress(percentLoaded, 100); 
} 

// File Loaded Function. 
function onFileLoaded(event:Event):void { 
var fileReference:FileReference=event.target as FileReference; 

var data:ByteArray=fileReference["data"]; 
var movieClipLoader:Loader=new Loader(); 
movieClipLoader.loadBytes(data); 
movieClipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMovieClipLoaderComplete); 

imageFile.removeEventListener(Event.COMPLETE, onFileLoaded); 
imageFile.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
} 

// Load Image onto Stage Function. 
function onMovieClipLoaderComplete(event:Event):void { 
var loadedContent:DisplayObject=event.target.content; 
image_loader =event.target.loader as Loader; 

var scaleWidth:Number=345/image_loader.width; 
image_loader.scaleX=image_loader.scaleY=scaleWidth; 
image_loader.height=200; 
image_loader.scaleX=image_loader.scaleY; 
image_loader.x=10; 
image_loader.y=10; 

image_content.buttonMode=true; 
image_content.addChild(image_loader); 
addChild(image_content); 
} 

// Upload Button Function. 
upload_btn.addEventListener(MouseEvent.CLICK, onupload_btnClicked); 

function onupload_btnClicked(event:MouseEvent):void { 
var filename:String=imageFile.name; 
var urlRequest:URLRequest = new URLRequest("http://www.xxxxx.com/xxxxx/file-reference.php"); 
var variables:URLVariables = new URLVariables(); 
urlRequest.method = URLRequestMethod.POST; 
imageFile.addEventListener(ProgressEvent.PROGRESS, onUploadProgress); 
imageFile.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadComplete); 
variables.ID = (RandomNumbers); 
urlRequest.data = variables; 
imageFile.upload(urlRequest); 
} 

// File Upload Progress Function. 
function onUploadProgress(event:ProgressEvent):void { 
var percentLoaded:Number=event.bytesLoaded/event.bytesTotal*100; 
UploadprogressBar.setProgress(percentLoaded, 100); 
trace("loaded: "+percentLoaded+"%"); 
upload_status_txt.text='upload in progress...'; 
} 

// Upload File Completed Function. 
function onUploadComplete(event:Event):void { 
upload_status_txt.text='upload complete'; 
imageFile.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
imageFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadComplete); 
UploadprogressBar.visible=false; 
} 

PHPサーバーコード:

<?php 
function getExtension($str) { 
$i = strrpos($str,"."); 
if (!$i) { return ""; } 
    $l = strlen($str) - $i; 
    $ext = substr($str,$i+1,$l); 
    return $ext; 
} 

$fileID = $_POST['ID']; 
$filename = basename($_FILES['Filedata']['name']); 

$extension = getExtension($filename); 
$extension = strtolower($extension); 
$uploadID = $fileID.'.'.$extension; 
if (move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".$uploadID)) 
{ 
    echo "OK"; 
} 
else 
{ 
    echo "ERROR"; 
} 
?> 

答えて

関連する問題