--****************************************************************************
-- Software: FLASH UPLOAD CLASS
-- Version: 1.1
-- Date: 2010-11-19
-- Author: Valentin Schmidt
-- Contact: fluxus@freenet.de
-- License: Freeware
--
-- Last Changes:
--
-- v1.1
-- added file size restriction
--
--****************************************************************************
property pFilename
property pUrl
property pAllTypes
property pFileRef
property pMaxSize
property pCbHandler
property pCbTarget
on new me
return me.script -- SINGLETON
end
----------------------------------------
--
----------------------------------------
on mInit me, tUrl, tCbHandler, tCbTarget
me.pUrl = tUrl
me.pCbHandler = tCbHandler
if voidP(tCbTarget) then tCbTarget=_movie
me.pCbTarget = tCbTarget
me.pAllTypes = void
me.pMaxSize = the maxInteger
listener = newObject("Object")
setCallback(listener, "onSelect", #onSelect, me)
setCallback(listener, "onCancel", #onCancel, me)
setCallback(listener, "onOpen", #onOpen, me)
setCallback(listener, "onProgress", #onProgress, me)
setCallback(listener, "onComplete", #onComplete, me)
setCallback(listener, "onHTTPError", #onHTTPError, me)
setCallback(listener, "onIOError", #onIOError, me)
me.pFileRef = newObject("flash.net.FileReference")
me.pFileRef.addListener(listener)
end
----------------------------------------
--
----------------------------------------
on mDestroy me
pAllTypes = VOID
pFileRef = VOID
clearASObjects()
end
----------------------------------------
--
----------------------------------------
on mStartUpload me, tUrl
if not voidP(tUrl) then me.pUrl = tUrl
if voidP(me.pAllTypes) then pFileRef.browse()
else pFileRef.browse(me.pAllTypes)
end
----------------------------------------
--
----------------------------------------
on mSetFileSizeLimit (me, tSize)
me.pMaxSize = tSize
end
----------------------------------------
--
----------------------------------------
on mSetFileTypes (me, tDescription, tExtensions)
me.pAllTypes = newObject("Array")
imageTypes = newObject("Object")
imageTypes.description = tDescription
imageTypes.extension = tExtensions
me.pAllTypes.push(imageTypes)
end
--**************************************
-- PRIVATE
--**************************************
----------------------------------------
--
----------------------------------------
on onSelect me, listener, fileRef
me.pFilename = fileRef.name
if fileRef.size > me.pMaxSize then
call(pCbHandler, pCbTarget, false, me.pFilename, -1)
return
end if
tUrl = pUrl&"?f="&URLEncode(me.pFilename)
ok = me.pFileRef.upload( tUrl )
if not(ok) then
--me._dbg("Upload dialog failed to open.")
else
me._progressInit()
end if
end
----------------------------------------
--
----------------------------------------
on onCancel me, listener, fileRef
--me._dbg("onCancel")
end
----------------------------------------
--
----------------------------------------
on onOpen me, listener, fileRef
--me._dbg("onOpen: " & fileRef.name)
end
----------------------------------------
--
----------------------------------------
on onProgress me, listener, fileRef, bytesLoaded, bytesTotal
--me._dbg("onProgress with bytesLoaded: " & bytesLoaded & " bytesTotal: " & bytesTotal)
me._progressShow(bytesLoaded/bytesTotal)
end
----------------------------------------
--
----------------------------------------
on onComplete me, listener, fileRef
--me._dbg("onComplete: " & fileRef.name)
me._progressDestroy()
call(pCbHandler, pCbTarget, true, me.pFilename)
end
----------------------------------------
--
----------------------------------------
on onHTTPError me, listener, fileRef, httpError
--me._dbg("onHTTPError: " & me.pFileRef.name &" Error:"+httpError)
me._progressDestroy()
call(pCbHandler, pCbTarget, false, me.pFilename, integer(httpError))
end
----------------------------------------
--
----------------------------------------
on onIOError me, listener, fileRef
--me._dbg("onIOError: " & me.pFileRef.name && tmpUrl)
me._progressDestroy()
call(pCbHandler, pCbTarget, false, me.pFilename, -2)
end
----------------------------------------
-- overwrite!
----------------------------------------
on _dbg (str)
put "DBG:" && str
end
----------------------------------------
-- PROGRESS-BAR HOOKS: overwrite!
----------------------------------------
----------------------------------------
--
----------------------------------------
on _progressInit me
-- me.pProg = script("ProgressDialog").new("File is uploaded...",0,1,1)
end
----------------------------------------
--
----------------------------------------
on _progressShow me, val
-- me.pProg.mShowProgress(val)
put "PROGRESS:" && val
end
----------------------------------------
--
----------------------------------------
on _progressDestroy me
-- me.pProg.mDestroy()
end