Hello!
I’m new here and I have a problem with an upload page I’m working on…
The first time I load the page nothing happens! but if I reload it it works perfectly.
I just learnt AS and Flash but this is the code I’ve managed to produce:
Main Class:
import ProgressBarExample;
var frList:FileReferenceList = new FileReferenceList();
var pendingFilesA:Array;
var urlR:URLRequest;
var i:uint;
var pBarsA:Array = new Array();
var filesUploadedTxt:TextField = new TextField();
var fileCount:Number = 0;
var userName:String = root.loaderInfo.parameters.userName;
addChild(filesUploadedTxt);
filesUploadedTxt.x = 250;
filesUploadedTxt.y = 150;
frList.addEventListener(Event.SELECT, selectHandler);
upload_btn.addEventListener(MouseEvent.CLICK,buttonClick);
function buttonClick(e:Event) {
try {
var success:Boolean = frList.browse();
} catch (error:Error) {
trace(error,success);
}
}
function selectHandler(event:Event):void {
filesUploadedTxt.text = "0/"+FileReferenceList(frList).fileList.length+" files uploaded";
removeChild(upload_btn);
pendingFilesA = new Array();
var file:FileReference;
for(i=0;i<FileReferenceList(frList).fileList.length;i++){
//i'th file in the list of files to upload
file = FileReference(FileReferenceList(frList).fileList*);
urlR = new URLRequest("upload2.php?userName="+userName);
addPendingFile(file,i);
}
}
function progressHandler(event:ProgressEvent, i:int):void{
var pBar:ProgressBarExample;
pBar = pBarsA*;
pBar.advancePreloader(event.bytesLoaded,event.bytesTotal);
}
function addPendingFile(file:FileReference,i:int):void {
pendingFilesA.push(file);
file.addEventListener(Event.COMPLETE, function(evt:Event){singleFileCompleteHandler(evt,i)});
file.addEventListener(ProgressEvent.PROGRESS,function(evt:ProgressEvent){progressHandler(evt,i)});
file.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
var fileTxt:TextField = new TextField();
addChild(fileTxt);
fileTxt.text = file.name+" :";
fileTxt.width = 200;
fileTxt.x = 10;
if(i == 0){
fileTxt.y = 10;
} else{
fileTxt.y = 10+i*35;
}
var pBar:ProgressBarExample;
pBar = new ProgressBarExample(10, 30+i*35);
addChild(pBar);
pBarsA* = pBar;
file.upload(urlR);
}
function onFileLoadError(event:Event):void {
trace("File load error");
}
function singleFileCompleteHandler(event:Event,i:int):void {
var file:FileReference = FileReference(event.target);
var pBar:ProgressBarExample;
pBar = pBarsA*;
pBar.advancePreloader(1,1);
removePendingFile(file);
fileCount++;
filesUploadedTxt.text = fileCount+"/"+FileReferenceList(frList).fileList.length+" files uploaded";
}
function removePendingFile(file:FileReference):void {
for(i=0;i<pendingFilesA.length;i++){
if (pendingFilesA*.name == file.name) {
pendingFilesA.splice(i, 1);
if (pendingFilesA.length == 0) {
doOnComplete();
}
break;
}
}
}
function doOnComplete(){
}
ProgressBarExample Class:
package
{
import fl.controls.Button;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.FileReference;
public class ProgressBarExample extends Sprite
{
private var j:uint;
private var pb:ProgressBar;
private var fakeProgressCount:uint;
private var progressAdd:Number = 0;
public function ProgressBarExample(placingY:int,placingX:int) {
fakeProgressCount = 0;
pb = new ProgressBar();
pb.width = 200;
pb.height = 10;
pb.move(placingY,placingX);
pb.mode = ProgressBarMode.MANUAL;
pb.setProgress(0,1);
addChild(pb);
}
public function advancePreloader(progressSize:int,fileSize:Number):void {
pb.setProgress(progressSize,fileSize);
}
public function advancePreloaderAdd(progressSize:int,fileSize:Number, adding:Number):void {
if(adding == 0){
pb.setProgress(progressAdd+progressSize,fileSize);
} else{
progressAdd = progressAdd+adding;
pb.setProgress(progressAdd+progressSize,fileSize);
}
}
}
}
PHP-uploader:
<?php
session_start();
$uploads_dir = './FILES/'.$_GET['userName'].'/';
if( $_FILES['Filedata']['error'] == 0 ){
if( move_uploaded_file( $_FILES['Filedata']['tmp_name'], $uploads_dir.$_FILES['Filedata']['name'] ) ){
echo 'ok';
exit();
}
}
echo 'error';
exit();
?>