如何使用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