跳轉到內容

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]
]
華夏公益教科書