FileUpload.mxml
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<
mx:Application xmlns:mx
=
"
http://www.adobe.com/2006/mxml
"
layout
=
"
absolute
"
creationComplete
=
"
initApp()
"
viewSourceURL
=
"
srcview/index.html
"
>
<
mx:Script
>
<!
[CDATA[

/**/
/*
Examples_FileUpload
Written by:
Dustin Andrew
dustin@flash-dev.com
www.flash-dev.com
*/
import
mx.states.
*
;
import
mx.controls.
*
;
import
mx.managers.
*
;
import
mx.events.
*
;
import
flash.events.
*
;
import
flash.net.
*
;
private
const
_strUploadDomain:String
=
"
http://codycodingcowboy.cahlan.com/
"
;
private
const
_strUploadScript:String
=
_strUploadDomain
+
"
files/upload.php
"
;
private
var _arrUploadFiles:Array;
private
var _numCurrentUpload:Number
=
0
;
private
var _refAddFiles:FileReferenceList;
private
var _refUploadFile:FileReference;
private
var _winProgress:winProgress;

private
function initApp():
void
...
{
Security.allowDomain("*");
_arrUploadFiles = new Array();
}
//
Called to add file(s) for upload

private
function addFiles():
void
...
{
_refAddFiles = new FileReferenceList();
_refAddFiles.addEventListener(Event.SELECT, onSelectFile);
_refAddFiles.browse();
}
//
Called to remove selected file(s) for upload

private
function removeFiles():
void
...
{
var arrSelected:Array = listFiles.selectedIndices;

for (var i:Number = 0; i < arrSelected.length; i++) ...{
_arrUploadFiles[Number(arrSelected[i])] = null;
}

for (var j:Number = 0; j < _arrUploadFiles.length; j++) ...{

if (_arrUploadFiles[j] == null) ...{
_arrUploadFiles.splice(j, 1);
j--;
}
}
listFiles.dataProvider = _arrUploadFiles;
listFiles.selectedIndex = 0;

if (_arrUploadFiles.length == 0) ...{
btnUpload.enabled = false;

} else ...{
btnUpload.enabled = true;
}
}
//
Called when a file is selected

private
function onSelectFile(event:Event):
void
...
{
var arrFoundList:Array = new Array();
// Get list of files from fileList, make list of files already on upload list

for (var i:Number = 0; i < _arrUploadFiles.length; i++) ...{

for (var j:Number = 0; j < _refAddFiles.fileList.length; j++) ...{

if (_arrUploadFiles[i].label == _refAddFiles.fileList[j].name) ...{
arrFoundList.push(_refAddFiles.fileList[j].name);
_refAddFiles.fileList.splice(j, 1);
j--;
}
}
}

if (_refAddFiles.fileList.length >= 1) ...{

for (var k:Number = 0; k < _refAddFiles.fileList.length; k++) ...{

_arrUploadFiles.push(...{label:_refAddFiles.fileList[k].name, data:_refAddFiles.fileList[k]});
}
listFiles.dataProvider = _arrUploadFiles;
listFiles.selectedIndex = _arrUploadFiles.length - 1;
}

if (arrFoundList.length >= 1) ...{
Alert.show("The file(s): • " + arrFoundList.join(" • ") + " ...are already on the upload list. Please change the filename(s) or pick a different file.", "File(s) already on list");
}

if (_arrUploadFiles.length == 0) ...{
btnUpload.enabled = false;

} else ...{
btnUpload.enabled = true;
}
}
//
Cancel and clear eventlisteners on last upload

private
function clearUpload():
void
...
{
_numCurrentUpload = 0;
_refUploadFile.removeEventListener(ProgressEvent.PROGRESS, onUploadProgress);
_refUploadFile.removeEventListener(Event.COMPLETE, onUploadComplete);
_refUploadFile.removeEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
_refUploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);
_refUploadFile.cancel();
}
//
Called to upload file based on current upload number

private
function startUpload(booIsFirst:Boolean):
void
...
{

if (booIsFirst) ...{
_numCurrentUpload = 0;
}

if (_arrUploadFiles.length > 0) ...{
_winProgress = winProgress(PopUpManager.createPopUp(this, winProgress, true));









































































































































