1. --****************************************************************************
  2. -- Software: FLASH UPLOAD CLASS
  3. -- Version:  1.1
  4. -- Date:     2010-11-19
  5. -- Author:   Valentin Schmidt
  6. -- Contact:  fluxus@freenet.de
  7. -- License:  Freeware
  8. --
  9. -- Last Changes:
  10. --
  11. -- v1.1
  12. -- added file size restriction
  13. --
  14. --****************************************************************************
  15.  
  16. property pFilename
  17. property pUrl
  18. property pAllTypes
  19. property pFileRef
  20. property pMaxSize
  21.  
  22. property pCbHandler
  23. property pCbTarget
  24.  
  25. on new me
  26.   return me.script -- SINGLETON
  27. end
  28.  
  29. ----------------------------------------
  30. --
  31. ----------------------------------------
  32. on mInit me, tUrl, tCbHandler, tCbTarget
  33.  
  34.   me.pUrl = tUrl
  35.   me.pCbHandler = tCbHandler
  36.   if voidP(tCbTarget) then tCbTarget=_movie
  37.   me.pCbTarget = tCbTarget
  38.   me.pAllTypes = void
  39.   me.pMaxSize = the maxInteger
  40.  
  41.   listener = newObject("Object")
  42.   setCallback(listener, "onSelect", #onSelect, me)
  43.   setCallback(listener, "onCancel", #onCancel, me)
  44.   setCallback(listener, "onOpen", #onOpen, me)
  45.   setCallback(listener, "onProgress", #onProgress, me)
  46.   setCallback(listener, "onComplete", #onComplete, me)
  47.   setCallback(listener, "onHTTPError", #onHTTPError, me)
  48.   setCallback(listener, "onIOError", #onIOError, me)
  49.  
  50.   me.pFileRef = newObject("flash.net.FileReference")
  51.   me.pFileRef.addListener(listener)
  52. end
  53.  
  54. ----------------------------------------
  55. --
  56. ----------------------------------------
  57. on mDestroy me
  58.   pAllTypes = VOID
  59.   pFileRef = VOID
  60.   clearASObjects()
  61. end
  62.  
  63. ----------------------------------------
  64. --
  65. ----------------------------------------
  66. on mStartUpload me, tUrl
  67.   if not voidP(tUrl) then me.pUrl = tUrl
  68.   if voidP(me.pAllTypes) then pFileRef.browse()
  69.   else pFileRef.browse(me.pAllTypes)
  70. end
  71.  
  72. ----------------------------------------
  73. --
  74. ----------------------------------------
  75. on mSetFileSizeLimit (me, tSize)
  76.   me.pMaxSize = tSize
  77. end
  78.  
  79. ----------------------------------------
  80. --
  81. ----------------------------------------
  82. on mSetFileTypes (me, tDescription, tExtensions)
  83.   me.pAllTypes = newObject("Array")
  84.   imageTypes = newObject("Object")
  85.   imageTypes.description = tDescription
  86.   imageTypes.extension = tExtensions
  87.   me.pAllTypes.push(imageTypes)
  88. end
  89.  
  90. --**************************************
  91. -- PRIVATE
  92. --**************************************
  93.  
  94. ----------------------------------------
  95. --
  96. ----------------------------------------
  97. on onSelect me, listener, fileRef
  98.   me.pFilename = fileRef.name
  99.   if fileRef.size > me.pMaxSize then
  100.       call(pCbHandler, pCbTarget, false, me.pFilename, -1)
  101.       return
  102.   end if
  103.  
  104.   tUrl = pUrl&"?f="&URLEncode(me.pFilename)
  105.   ok =  me.pFileRef.upload( tUrl )
  106.  
  107.   if not(ok) then
  108.     --me._dbg("Upload dialog failed to open.")
  109.   else
  110.     me._progressInit()
  111.   end if
  112. end
  113. ----------------------------------------
  114. --
  115. ----------------------------------------
  116. on onCancel me, listener, fileRef
  117.   --me._dbg("onCancel")
  118. end
  119.  
  120. ----------------------------------------
  121. --
  122. ----------------------------------------
  123. on onOpen me, listener, fileRef
  124.   --me._dbg("onOpen: " & fileRef.name)
  125. end
  126.  
  127. ----------------------------------------
  128. --
  129. ----------------------------------------
  130. on onProgress me, listener, fileRef, bytesLoaded, bytesTotal
  131.   --me._dbg("onProgress with bytesLoaded: " & bytesLoaded & " bytesTotal: " & bytesTotal)
  132.   me._progressShow(bytesLoaded/bytesTotal)
  133. end
  134.  
  135. ----------------------------------------
  136. --
  137. ----------------------------------------
  138. on onComplete me, listener, fileRef
  139.   --me._dbg("onComplete: " & fileRef.name)
  140.   me._progressDestroy()
  141.   call(pCbHandler, pCbTarget, true, me.pFilename)
  142. end
  143.  
  144. ----------------------------------------
  145. --
  146. ----------------------------------------
  147. on onHTTPError me, listener, fileRef, httpError
  148.   --me._dbg("onHTTPError: " & me.pFileRef.name &" Error:"+httpError)
  149.   me._progressDestroy()
  150.   call(pCbHandler, pCbTarget, false, me.pFilename, integer(httpError))
  151. end
  152.  
  153. ----------------------------------------
  154. --
  155. ----------------------------------------
  156. on onIOError me, listener, fileRef
  157.   --me._dbg("onIOError: " & me.pFileRef.name && tmpUrl)
  158.   me._progressDestroy()
  159.   call(pCbHandler, pCbTarget, false, me.pFilename, -2)
  160. end
  161.  
  162. ----------------------------------------
  163. -- overwrite!
  164. ----------------------------------------
  165. on _dbg (str)
  166.   put "DBG:" && str
  167. end
  168.  
  169. ----------------------------------------
  170. -- PROGRESS-BAR HOOKS: overwrite!
  171. ----------------------------------------
  172.  
  173. ----------------------------------------
  174. --
  175. ----------------------------------------
  176. on _progressInit me
  177.   -- me.pProg = script("ProgressDialog").new("File is uploaded...",0,1,1)
  178. end
  179.  
  180. ----------------------------------------
  181. --
  182. ----------------------------------------
  183. on _progressShow me, val
  184.   -- me.pProg.mShowProgress(val)
  185.   put "PROGRESS:" && val
  186. end
  187.  
  188. ----------------------------------------
  189. --
  190. ----------------------------------------
  191. on _progressDestroy me
  192.   -- me.pProg.mDestroy()
  193. end
  194.  
[raw code]