more problems with ftp
Alex Tweedly
alex at tweedly.net
Sun Sep 12 17:07:44 EDT 2004
At 21:54 12/09/2004 +0200, Klaus Major wrote:
>Hi rand,
>
>> Hi, all. I really appreciate the feedback you guys gave me on my ftp
>>problem -- I was trying to download a series of files and I needed to know
>>how to use the libURLDownloadToFile command properly. My problem was that
>>files weren't downloading proprerly, and I figured it was because I was
>>using a "blocking" strategy with a looping "put" command. But I continue to
>>have problems and I'm hoping someone can give me a clue. Here's the problem:
>>
>> Following similar suggestions from Sarah Reichelt and Andre Garzia, I
>>created special handlers that use the libURLDownloadToFile command, like so:
>>
>>libURLDownloadToFile
>>tFileOnWebtoGet,tFileNameOfDownloadedFile,"downloadDone"
>>
>> Then I have a handler
>>
>>on downloadDone
>> --
>>end downloadDone
>>
>> which checks to see if the download queue is empty, and if so, quits. The
>>problem is that on downloadDone never seems to get called.
>
>Please make sure that BOTH handlers, the one that calls the
>"libURLDownloadToFile"
>AND "DownloadDone" are in the SAME script!
I'm bothered when you say "checks to see if the download queue is empty,
and if so, quits".
The downloadDone handler will be called when each file has completed
downloading (i.e. once per call to libURLDownloadToFile, so it needs to
exit each time.
>>There must be an
>>error in downloading the first file, which has the correct name in the local
>>directory, but is empty.
>>
>> well, there is a stunning array of potential problems, i am realizing. but
>>when i do a test for an error message on download, i get:
>>
>>"error, url is currently loading"
>>
>> what is this about, since the handler that called that url should be long
>>done? is there a way to wipe the ftp slate clean?
libURLResetAll should do it.
Here's a snippet of code that downloads and displays photos; the photos are
downloaded into a local disk-based cache, and displayed from there; the
rest of the code is downright confusing, so this is just the business part
of it ....
btw - I have very high expectation that these transfers will succeed,
because the photo names are generated automatically, so it's very unlikely
there will be failures, therefore there's not as much error checking as
would normally be desirable.
This comes at the very end of the handler "display_photo"
put "d:/filecache/"&thisPhotoName into cacheName
libURLSetStatusCallback "downloadStatus", the long ID of me
libURLDownloadToFile fname, cacheName, "downloadComplete"
end display_photo
on downloadComplete
get the URLStatus of remoteName
if it <> "downloaded" then
set the visible of field "MyField" to true
put "download status is" && it && "for" && remoteName && "into" &&
thisPhotoName & cr after msg
end if
set the visible of field "MyField" to false
put URL ("binfile:d:/filecache/"&thisPhotoName) into image "MyImage"
put empty into thisPhotoName
go stack "Photo Viewer Window"
end downloadComplete
on downloadStatus
get the URLStatus of remoteName
if it <> "downloaded" then
set the visible of field "MyField" to true
put "Downloading:" && thisPhotoName && the URLStatus of remoteName
into field "MyField"
end if
end downloadStatus
hope this helps,
-- Alex Tweedly.
More information about the use-livecode
mailing list