如何使用http包下载文件?

时间:2016-02-27 18:20:51

标签: http tcl

如何使用http包下载文件?

package require http
set file  [ ::http::geturl "<url>"] 

与卷曲有关的东西:

curl -X GET '<URL>' -o /tmp/download.tar

我的要求是我在Linux服务器上有一个文件X&amp;从另一个Linux服务器Y,我已经安装了http包和Tcl。现在有人可以建议如何从X&amp;把它保存在Y?

2 个答案:

答案 0 :(得分:2)

如果您阅读documentation,您会看到如果您通过-channel选项,http::geturl命令会将URL中的数据写入该频道。它有效地做到了这一点此外,如果传递-binary标志,则可以强制不对字节进行解释。这些是您需要的工具。

但是,您还应该知道http::geturl的返回值是一个“标记”,用于其他命令,例如,查询GET是否成功。完成后应该清理它。

这是一个错误检测非常少的例子。

set f [open /tmp/download.tar wb]
set tok [http::geturl $URL -channel $f -binary 1]
close $f
if {[http::status $tok] eq "ok" && [http::ncode $tok] == 200} {
    puts "Downloaded successfully"
}
http::cleanup $tok

有很多事情可能出错!

答案 1 :(得分:1)

如果您搜索过&#34; tcl http下载文件&#34;你会找到this page,它有这段代码:

package require http
proc getPage { url } {
    set token [::http::geturl $url]
    set data [::http::data $token]
    ::http::cleanup $token          
    return $data
}

该命令名为getPage,但它将为您获取大多数文件。它不会正确处理二进制文件,但是如果你再搜索一下,或者查看文档,你会发现如何处理它们。