how to use curl to download a file
Graham Fawcett
fawcett at uwindsor.ca
Wed Nov 2 08:09:17 PDT 2011
On Tue, 01 Nov 2011 18:20:25 +0000, Frédéric Galusik wrote:
> Hi,
>
> As the curl documentation is a little bit ...wow.
> http://www.digitalmars.com/d/2.0/phobos/etc_c_curl.html
>
> Do someone have a simple example on how to download a simple file ?
>
> Thank you.
Until the high-level bindings for curl are available in Phobos, I have a
little module you could use.
https://github.com/gmfawcett/d-play-libcurl/blob/master/fawcett/curl.d
The default version prints the result to stdout, and there's a commented
main() that shows how to get a callback when data is received. If you
wanted to download directly into a file, you could do this:
import std.stdio;
import fawcett.curl;
class FileCurl : Curl
{
this(string url, File f) {
handle = curl_easy_init();
set(CURLoption.URL, url);
set(CURLoption.FILE, cast(void*) f.getFP);
}
}
void main() {
auto f = File("/tmp/stuff", "w");
auto c = new FileCurl("http://example.com/", f);
c.perform();
}
Note, it doesn't call super() in the constructor, which is bad form, but
the current default constructor is overkill for just downloading a file.
(It's not a production-quality curl binding.)
Rather than putting my module in 'fawcett/curl.d', you might just want to
remove the 'module' line in 'curl.d' and put it in the same directory as
your program.
Best,
Graham
More information about the Digitalmars-d-learn
mailing list