Código PHP:
/*
FileUpload.as
Sascha Wenning
Jan 2006
Feel free to customize for your needs
Code is partly documentated
*/
import mx.controls.gridclasses.DataGridColumn;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import mx.containers.Window;
import mx.utils.Delegate;
class de.saschawenning.fileUpload.FileUpload{
private var tl:MovieClip;
private var titleWindow:String;
private var frWindow:MovieClip; //path to windowComponent
private var uploadMode;
private var xCoord;
private var yCoord;
private var uploadDir;
private var pathUploadScript;
private var pathXmlFileStructure;
private var varss;
private var waiter;
private var xmlFileStructure;
private var fileRef;
private var fileRefListener;
private var filesToUpload:Array;
private var totalKilobytesToUpload;
private var totalKiloBytesUploaded;
private var filesUploaded; //num of files uploaded
private static var maxFilesize; //in MB per file you can set this also by hand to limit it
private var labelUploadBtn;
public function FileUpload(timeline, titleW, uploadMode, xCoord, yCoord, uploadDir, pathUploadScript, pathXmlFileStructure){
//vars
this.tl = timeline;
this.titleWindow = titleW;
this.uploadMode = uploadMode;
this.xCoord = xCoord,
this.yCoord = yCoord
this.uploadDir = uploadDir;
this.pathUploadScript = pathUploadScript;
this.pathXmlFileStructure = pathXmlFileStructure
totalKilobytesToUpload = 0;
totalKiloBytesUploaded = 0;
filesUploaded = 0;
filesToUpload = new Array();
labelUploadBtn = "Enviar Ahora";
//init stuff
attachWindow();
}
//xmlFileStructure fully loaded
public function parseXmlFileStructure(success:Boolean){
if(success){
if(xmlFileStructure.status == 0){
//no error
} else {
frWindow.content.feedback_txt.htmlText = "<p align='center'>An error occured while loading XmlFileStructure</p>";
}
} else {
frWindow.content.feedback_txt.htmlText = "<p align='center'>Unable to load/parse XmlFileStructure. (Status: "+xmlFileStructure.status+")</p>"
}
frWindow.content.explorer_tree.dataProvider = xmlFileStructure.firstChild;
}
//user clicks select files button
public function browseClick(){
frWindow.content.feedback_txt.htmlText = "";
checkLabelUploadBtn();
fileRef.browse();
}
//user has selected some files
public function fileRefListener_onSelect(fileRefList:FileReferenceList){
var list:Array = fileRefList.fileList;
var tempList = new Array();
for(var i=0; i< list.length; i++){
var sizeFile = list[i].size/1024/1024; //in MB
if((sizeFile > maxFilesize) || (sizeFile >= 150)){ //150 MB is Flash Player limit per file
/**********************************************************************************************************/
frWindow.content.feedback_txt.htmlText = "<p align='center'>Maximo 150 MB: El fichero excede del tamaño ("+Math.ceil(sizeFile)+" MB)";
/**********************************************************************************************************/
}else{
_root.mystring="hello people this ones useful"
if(_root.mystring.findstring(varss)){
trace("NO LO ENCONTRO !!!");
frWindow.content.feedback_txt.htmlText = "<p align='center'>El tipo de fichero no esta permitido: Seleccione | *.rar | *.zip | *.ace | *.iso | *.bin | *.7z |";
}else{
tempList.push(list[i])
}
String.prototype.findstring=function(string){
if(this.indexOf(string) != -1){
return true
}else{
return false
}
}
}
}
filesToUpload = filesToUpload.concat(tempList);
frWindow.content.fileList_grid.dataProvider = filesToUpload;
checkGridItems();
}
//while upload is in progress disable user interface
public function disableWhileUploadContinues(){
frWindow.content.refreshTree_btn.enabled = false;
frWindow.content.explorer_tree.enabled = false;
frWindow.content.fileList_grid.enabled = false;
frWindow.content.del_btn.enabled = false;
frWindow.content.browse_btn.enabled = false;
}
//upload is completed: enable user interface
public function enableAfterUpload(){
frWindow.content.refreshTree_btn.enabled = true;
frWindow.content.explorer_tree.enabled = true;
frWindow.content.fileList_grid.enabled = true;
frWindow.content.del_btn.enabled = true;
frWindow.content.browse_btn.enabled = true;
fileListChange();
checkGridItems();
updateTree();
}
//upload ach selected file
public function uploadFiles(){
filesUploaded = 0;
totalKilobytesToUpload=0;
totalKiloBytesUploaded=0;
disableWhileUploadContinues();
var item;
for(var i:Number = 0; i < filesToUpload.length; i++) {
item = filesToUpload[i];
item.addListener(fileRefListener);
item.bereitsGeladen = 0;
if(!item.upload(pathUploadScript+"?uploadDir="+uploadDir)) {
frWindow.content.feedback_txt.htmlText = "Ocurrio un error en el dialogo Upload.";
}
}
}
//if an upload process is completed and user wants
//to upload more files
public function checkLabelUploadBtn(){
if(frWindow.content.upload_btn.label != labelUploadBtn){
frWindow.content.upload_btn.label = labelUploadBtn;
}
}
//check if grid is empty and enable/disable buttons
public function checkGridItems(){
if(frWindow.content.fileList_grid.dataProvider.length > 0){
if(uploadMode == "Rich" && frWindow.content.explorer_tree.selectedItem.attributes.folders != undefined){
frWindow.content.upload_btn.enabled = true;
return true;
}
if(uploadMode == "Simple"){
frWindow.content.upload_btn.enabled = true;
}
}else{
frWindow.content.upload_btn.enabled = false;
frWindow.content.del_btn.enabled = false;
}
}
//cancel handler if you need it
public function fileRefListener_onCancel(){
trace("cancel");
}
//determine uploaded filesize in percent regarding total filesize to upload
public function updateTransferStatus(){
totalKiloBytesUploaded = 0;
for(var i=0; i<filesToUpload.length; i++){
totalKiloBytesUploaded += filesToUpload[i].bereitsGeladen;
}
frWindow.content.upload_btn.label = "Enviando... (" + Math.round((totalKiloBytesUploaded/totalKilobytesToUpload)*100) + " %)";
}
//if up- or download starts
public function fileRefListener_onOpen(file:FileReference){
totalKilobytesToUpload += (Math.ceil(file.size/1024));
updateTransferStatus();
}
//dispatch progress
public function fileRefListener_onProgress(file, bytesLoaded:Number, bytesTotal:Number){
file.bereitsGeladen = Math.ceil(bytesLoaded/1024);
updateTransferStatus();
}
//when upload process is completed, clear grid
public function clearGrid(){
filesToUpload = new Array();
frWindow.content.fileList_grid.dataProvider = filesToUpload;
checkGridItems();
}
//a single file (perhaps in queue) has been uploaded
public function fileRefListener_onComplete(){
filesUploaded++;
updateTransferStatus();
if(filesUploaded == filesToUpload.length){
enableAfterUpload();
frWindow.content.upload_btn.label = "Upload completado.";
clearGrid();
/**********************************************************************************************************/
getURL("index.php");
/**********************************************************************************************************/
}
}