how to use curl to download a file
Frédéric Galusik
fredg at salixosnospam.org
Wed Nov 2 09:31:30 PDT 2011
Le Wed, 02 Nov 2011 15:09:17 +0000, Graham Fawcett a écrit :
> 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
Thank you very much, it's very interesting.
Best regards.
++ fredg
More information about the Digitalmars-d-learn
mailing list