I strucked at a point in designing uploading component in flex. Below is the code of my uploading component. Please find the red marked content in the below code. My requirement is to alert the URL of the file selected in the list box when i click a file item in the listbox. Please help me ...
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " layout="absolute" creationComplete="initApp()"> <mx:Style> Text{ font-weight: normal; } Label{ font-weight: bold; } </mx:Style> <mx:Script> <![CDATA[ import mx.states.*; import mx.controls.*; import mx.managers.*; import mx.events.*; import mx.events.ListEvent; import flash.events.*; import flash.net.*; private var _arrUploadFiles:Array; private var _numCurrentUpload:Number = 0; private var _refAddFiles:FileReferenceList; private var _refUploadFile:FileReference; private var _strUploadUrl:String; private function initApp():void { Security.allowDomain("*"); _arrUploadFiles = new Array(); } // Set uploadUrl public function set uploadUrl(strUploadUrl:String):void { _strUploadUrl = strUploadUrl; } 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; } 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): \n\n " + arrFoundList.join("\n ") + "\n\n...are already on the upload list. Please change the filename(s) or pick a different file.", "File(s) already on list"); } } private function changeHandler(event:ListEvent):void{ Alert.show(event.itemRenderer.data.label); // Here i want to alert the URL of the file clicked, // i.e, URL of the file from where the file is uploaded. } ]]> </mx:Script> <mx:List id="listFiles" x="393" y="229" width="258" itemClick="changeHandler(event)"/> <mx:Button x="659" y="239" label="Add" click="addFiles()" /> <mx:Button x="659" y="269" label="Del" click="removeFiles()"/> </mx:Application>