aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8255|回复: 2

请问如何使用CURL下载文件

[复制链接]

2

主题

1

回帖

18

积分

新手入门

积分
18
发表于 2013-10-5 11:02:27 | 显示全部楼层 |阅读模式
我知道可以使用 inet 库下载文件,但是换一种方式,如何用CURL下载文件呢?CURL库有个方法叫:

http.onReceive = function(buffer,size,nmemb){
}

但是在其中使用 file.writeBuffer 是无效的,下载为 0 字节,以下为可供测试的代码:

  1. import console;//打开控制台

  2. import curl;

  3. var file = io.file('/1.png', 'wb');
  4. var http = curl.easy();//创建客户端
  5. http.setOpt(0x2712/*_CURLOPT_URL*/, 'http://bbs.aardio.com/static/image/common/logo.png');
  6. http.onReceive = function(buffer,size,nmemb){
  7.         file.writeBuffer(buffer);
  8.         return nmemb;
  9. }
  10. http.exec();
  11. http.close();
  12. file.close();

  13. console.pause() //按任意键继续
  14. ;//关闭控制台
复制代码
在不使用 inet 库的情况下,使用 CURL 库如何下载文件呢?

42

主题

628

回帖

3765

积分

版主

积分
3765
发表于 2013-10-5 11:44:04 | 显示全部楼层
curl 扩展库( 文件上传下载 )
这里写的很清楚, file.write( raw.tostring(buffer,1,nmemb) );

输入 file.writeBuffer() 你能看到函数提示:“该函数的参数必须是 raw.buffer() 创建的缓冲区 ”,你这里的缓冲区是CURL返回的,并不是 raw.buffer() 创建,所以用法错误。

2

主题

1

回帖

18

积分

新手入门

积分
18
 楼主| 发表于 2013-10-5 12:39:48 | 显示全部楼层
编程 发表于 2013-10-5 11:44
curl 扩展库( 文件上传下载 )
这里写的很清楚, file.write( raw.tostring(buffer,1,nmemb) );


非常感谢,看到tostring就没想着再用这个方法,感谢指点,确实已下载成功。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-3-20 03:26 , Processed in 0.055838 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表