On 6/20/13 1:08 PM, Devin Asay wrote:
Hi folks,

Maybe I'm missing something. I want to get progress information from a rather 
large download from an HTTP server. This is what I'm doing:

command downloadFile
     set the cursor to watch
     put "http://server.com/data/myfile.gz"; into tRemote_GZ
     put "/path/to/file/pwr_complete.gz" into tLocal_GZ
     put url tRemote_GZ into url ("binfile:" & tLocal_GZ)
end downloadFile

on urlProgress pURL, pStatus, pMessage, pBytesTotal
     put "Downloading " & pURL & cr & "Status: " & pStatus &&  pMessage &&  "of 
TotalBytes: " & pBytesTotal \
           into fld "prog"
end urlProgress

Nothing ever shows up in field "prog", but the download eventually succeeds. I 
can see the file on my hard drive after it has downloaded.

Am I doing something wrong? I'm on OS X 10.7.x and LC 6.0.2.

It looks like the urlProgress message is only for mobile. On desktop, here's the core of what I use:

  put sURL & tFile & ".gz" into tURL
  set cursor to watch
  libUrlSetStatusCallback "checkStatus", (the long id of me)
  set the thumbpos of sb "progressbar" to 0
  put tData into url tURL
  get the result
  if it <> "" then answer "Could not upload file:" && it
  libUrlSetStatusCallback empty -- turn it off

You turn on the status callback before the download and turn it off afterward. My example uploads, but it works the same going the other direction. Once the status callback is set, you'll get periodic messages with whatever callback you assigned (in this case, the message will be "checkStatus") and the message will be sent to the location you assigned (in my case, the long ID of the script object.) So you need a handler to catch the callback:

on checkStatus tURL,tStatus
  put tStatus into fld "statusFld" -- might be all you need
  switch
  case tStatus contains "loading"
    set the endvalue of sb "progressbar" to item 3 of tStatus
    set the thumbpos of sb "progressbar" to item 2 of tStatus
    break
  case tStatus contains "uploaded"
set the thumbpos of sb "progressbar" to the endvalue of sb "progressbar"
    break
  default
    set the thumbpos of sb "progressbar" to 0
  end switch
end checkStatus

Mine updates a progress bar, but you could just report the progress in a text field.


--
Jacqueline Landman Gay         |     jac...@hyperactivesw.com
HyperActive Software           |     http://www.hyperactivesw.com

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to