Rebol 程式設計/read-net
外觀
READ-NET url /progress callback
從網路(web)讀取檔案。更新進度條。允許中止。
READ-NET 是一個函式值。
- url -- (型別:url)
- /progress
- callback -- 在傳輸期間呼叫 func [總位元組數]。返回 true。 (型別:任何)
read-net: func [
{Read a file from the net (web). Update progress bar. Allow abort.}
url [url!]
/progress callback {Call func [total bytes] during transfer. Return true.}
/local port buffer data size
][
vbug ['read-net url]
if error? try [port: open/direct url] [return none]
size: to-integer any [port/locals/headers/content-length 8000]
buffer: make binary! size
set-modes port/sub-port [lines: false binary: true no-wait: true]
until [
if not data: wait [60 port/sub-port] [data: true break]
if data: copy port/sub-port [append buffer data]
all [:callback size not callback size length? buffer data: true break]
not data
]
close port
if not data [buffer]
]