FTP uploads with curl - monitoring progress - any ideas?
Phil Davis
revdev at pdslabs.net
Thu Mar 4 15:16:29 EST 2010
Hi Ken,
If you open curl as a process, you can then read the status info one
line at a time. Would that work?
Here's one way (courtesy of Josh Mellicker, with some mods):
-- a button script --
local vCurlProcess
on mouseUp
put empty into fld "output"
put formattedForCurl(fld "filename") into tFiles
put ("curl -T" && tFiles && fld "server" && "-C -") into vCurlProcess
open process vCurlProcess for read
get the result
if it = empty
then send "getCurlReport" to me in 12 ticks
else answer it
end mouseUp
on getCurlReport
read from process vCurlProcess for 1 line
put it after fld "output"
if it = empty
then closeCurl
else send "getCurlReport" to me in 12 ticks
end getCurlReport
on closeCurl
close process vCurlProcess
answer "Done."
end closeCurl
function formattedForCurl pFileList
-- handle single file selection
if the number of lines in pFileList = 1 then return quote &
pFileList & quote
-- handle multi file selections
replace CR with "," in pFileList
put quote & "{" & pFileList & "}" & quote into tList
return tList
end formattedForCurl
There you have it!
Phil
On 3/4/10 10:28 AM, Ken Ray wrote:
> I have some large files (100MB +) that I need to FTP to a customer's server.
> I have tried to use libURL to do the uploading, but I get odd results/random
> timeouts/errant status messages when the file I'm uploading is over 40MB.
> I've tried many different workarounds to this, but none have been
> consistent/acceptable so for this project I'm seeing if I can use curl.
>
> The pain is that there doesn't seem to be a way to retrieve the progress of
> an FTP upload so I can display a custom upload box. If I redirect it to
> dev/null, I get control back after the upload starts, but I can't get any
> progress data:
>
> curl -T filePath -u user:pass serverAdress> /dev/null 2>&1&
>
> If I redirect to stdin, it's blocking and I only get anything when the
> upload is complete:
>
> curl -T filePath -u user:pass serverAdress> stdin
>
> I've also tried:
>
> curl -T filePath -u user:pass serverAdress> stdin&
> curl -T filePath -u user:pass serverAdress> stdin 2>&1&
>
> Is there any way to make a non-blocking call to curl, but then to get back
> the progress text that would normally be displayed in the Terminal?
>
> Any help would be appreciated...
>
> Ken Ray
> Sons of Thunder Software, Inc.
> Email: kray at sonsothunder.com
> Web Site: http://www.sonsothunder.com/
>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
--
Phil Davis
PDS Labs
Professional Software Development
http://pdslabs.net
More information about the use-livecode
mailing list