Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Através do Javascript preciso acessar a função de abrir a janela de seleção de arquivos para depois fazer o upload. Pois o botão em SWF não aparece em navegadores de celulares e eu não sei nada de actionscript. Se souberem como fazer o botão em flash aparecer, eu também agradeço.
ActionScript:
/**
* Uploader class
*
* @author Fredi Machado <fredisoft at gmail dot com>
* @link [http://fredimachado.com.br](http://fredimachado.com.br)
* @date 08/16/2009
**/import flash.display.*;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.net.*;
import flash.utils.*;
public class multiUpload extends Sprite
{
private var param:Object = LoaderInfo(parent.loaderInfo).parameters;
private var counter:Number = 0;// Events that can be listened by Javascript
static public const MOUSE_CLICK:String = "onMouseClick"; // When clicking the flash button
static public const SELECTION_CANCEL:String = "onSelectionCancel"; // When the selection window is closed/canceled
static public const FILES_SELECT:String = "onSelected"; // When the user makes a selection
static public const UPLOAD_START:String = "onStart"; // When a file upload is started
static public const UPLOAD_ERROR:String = "onError"; // When any error occurs
static public const UPLOAD_PROGRESS:String = "onProgress"; // Occurs on any progress change
static public const UPLOAD_CANCEL:String = "onCancel"; // When a upload is canceled
static public const UPLOAD_COMPLETE:String = "onComplete"; // When the upload is completed
static public const UPLOAD_ALL_COMPLETE:String = "onAllComplete"; // When all uploads from the queue are completed
static public const UPLOAD_QUEUE_CLEAR:String = "onClearQueue"; // When the queue is cleared
public function multiUpload()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.showDefaultContextMenu = false;
files = {};
fileIDs = new Dictionary();
stage.addEventListener(MouseEvent.CLICK, btnClick);
// Register Javascript callbacks
ExternalInterface.addCallback("onMouseClick", clickOpen);
ExternalInterface.addCallback("startUpload", startUpload);
ExternalInterface.addCallback("cancelUpload", cancelUpload);
ExternalInterface.addCallback("clearUploadQueue", clearQueue);
ExternalInterface.addCallback("getFile", getFile);
ExternalInterface.addCallback("setData", setData);
if (!param.scriptData)
param.scriptData = '';
}
public function btnClick(e:MouseEvent):voidtriggerJS(e);
// Open the select window
select();
}
}
public function select():Booleanvar i:int = 0;
var type:Object;
var filter:Array = new Array();
if (param.desc != "" && param.ext != "")var descriptions:Array = param.desc.split('|');
var extensions:Array = param.ext.split('|');
for (var n = 0; n < descriptions.length; n++)
filter.push(new FileFilter(descriptions[n], extensions[n]));
}
if (param.multi)fileRefList = new FileReferenceList();
fileRefList.addEventListener(Event.SELECT, triggerJS);
fileRefList.addEventListener(Event.CANCEL, triggerJS);
return filter.length ? fileRefList.browse(filter) : fileRefList.browse();
}fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, triggerJS);
fileRef.addEventListener(Event.CANCEL, triggerJS);
return filter.length ? fileRef.browse(filter) : fileRef.browse();
}
}
public function startUpload(continuing:Boolean = false):voidvar id:String;
var script:String = param.script;
var file:FileReference;
if (continuing && objSize(files) == 0)
{
triggerJS({
type: UPLOAD_ALL_COMPLETE
});
return;
}
if (active != "" || objSize(files) == 0)
return;
if (script.substr(0,1) != '/' && script.substr(0,4) != 'http')
script = param.path + script;
vars = new URLVariables();
if (param.scriptData != '')
vars.decode(unescape(param.scriptData));
var urlReq:URLRequest = new URLRequest(script);
urlReq.method = (param.method == "GET") ? URLRequestMethod.GET : URLRequestMethod.POST;
urlReq.data = vars;
id = getNextId();
file = getFileRef(id);
param.maxsize = parseInt(param.maxsize);
if (param.maxsize > 0 && file.size > param.maxsize)active = id;
file.upload(urlReq);
}
}
private function getNextId():Stringvar id:String;
for (id in files)
break;
return id;
}
public function validId(id:String):Booleanreturn id in files;
}
private function addFiles(objFiles:Object):Arrayvar ret:Array = new Array();
var i:int = 0;
if (objFiles is FileReference)
ret.push(objFiles);
else if (objFiles is FileReferenceList)
ret = objFiles.fileList;
while (i < ret.length)
{
addFile(ret);
i++;
}
return ret;
}
// Adiciona a referência do arquivo
private function addFile(file:FileReference):String
{
var id:String = String(++counter);
files[id] = file;
fileIDs[file] = id;
file.addEventListener(Event.OPEN, triggerJS);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, triggerJS);
file.addEventListener(ProgressEvent.PROGRESS, triggerJS);
file.addEventListener(HTTPStatusEvent.HTTP_STATUS, triggerJS);
file.addEventListener(IOErrorEvent.IO_ERROR, triggerJS);
file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, triggerJS);
return id;
}
public function cancelUpload(id:String):void
{
var file:FileReference = getFileRef(id);
if (validId(id))
file.cancel();
delete files[id];
if (active == id)
{
active = "";
startUpload(true);
}
triggerJS({
type: UPLOAD_CANCEL,
target: file
});
}
function clearQueue():void
{
for (var id in files)
cancelUpload(id);
triggerJS({
type: UPLOAD_QUEUE_CLEAR
});
}
private function fileId(file:FileReference):String
{
if (file in fileIDs)
*return fileIDs[file];*
*return null;**ret.push(getFileObject(arrFiles**));*
i++;
}
return ret;
}
private function getFileObject(file:FileReference):Object
{
return {
id: fileId(file),
name: file.name,
creation: file.creationDate.getTime(),
modification: file.modificationDate.getTime(),
size: file.size,
type: file.type
};
}
public function getFile(id:String):Object
{
if (!validId(id))
return null;
return getFileObject(getFileRef(id));
}
private function getFileRef(id:String):FileReference
{
if (validId(id))
*return files[id];*
*return null;*Carregando comentários...