如何使用http
包下载文件?如何使用http包下载文件?
package require http
set file [ ::http::geturl "<url>"]
东西呈三角什么卷曲的作用:
curl -X GET '<URL>' -o /tmp/download.tar
我的要求是我从另一台Linux服务器Y其中我有我的http
封装的Tcl一起安装有Linux服务器X &上的文件。现在可以有人建议如何从X &下载该文件保存在Y?
如何使用http
包下载文件?如何使用http包下载文件?
package require http
set file [ ::http::geturl "<url>"]
东西呈三角什么卷曲的作用:
curl -X GET '<URL>' -o /tmp/download.tar
我的要求是我从另一台Linux服务器Y其中我有我的http
封装的Tcl一起安装有Linux服务器X &上的文件。现在可以有人建议如何从X &下载该文件保存在Y?
如果你在搜索“TCL HTTP下载文件”,你会发现this page,其中有这样的代码:
package require http
proc getPage { url } {
set token [::http::geturl $url]
set data [::http::data $token]
::http::cleanup $token
return $data
}
命令被命名为getPage
,但它会得到大多数文件给你。它不会正确处理二进制文件,但如果您搜索更多,或查看文档,您将了解如何处理这些文件。
如果您阅读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
有很多事情可以出错!
谢谢你们,这些帮助我很多:-) – Chakri