2012-05-10 5 views
3

В настоящее время у меня есть swf, который позволяет вам выбирать и отображать файл и загружать его на сервер с помощью FileReference. Это отлично работает, но мне нужно иметь возможность выбирать и отображать несколько (до 25 в некоторых случаях), а затем загружать их все в конце.Flash AS3 FileReference - выбор и загрузка нескольких файлов по одному

Я знаю, что вы можете использовать FileReferenceList для одновременного выбора нескольких файлов в диалоговом окне, но моя проблема в том, что пользователю нужно выбирать по одному, делать что-то на этом изображении, а затем выбирать другое, делать что-то и так далее ... затем в конце, когда они нажимают на загрузку, загружают их все на сервер.

Возможно ли это или есть способ, поэтому я могу добавить каждый новый выбранный файл в массив, а затем в конце он загружает все файлы в массиве либо в один проход, либо через них, пока все объекты в массив завершен?

Может ли кто-нибудь помочь? Я отправлю полный код для моей рабочей загрузки одного файла ниже.

Пожалуйста, помогите пожалуйста, я ограничен со вспышкой и только узнавал в течение 3-4 месяцев, и я застрял в течение недели теперь :(

Lauren

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"; 
} 
?> 

ответ

Смежные вопросы