0
download-dir: request-dir
Print ["downloading " "VStudio2008Express.iso" "..." ]
url: http://go.microsoft.com/fwlink/?LinkId=104679 
file-save: to-rebol-file rejoin [download-dir "VStudio2008Express.iso"]
request-download/to url file-save

最后,虽然进度条显示下载已完成:

** Script Error: Not enough memory
** Where: append
** Near: insert tail series :value
>>

那么如何更正请求下载,因为它是一个夹层功能:

func [
    {Request a file download from the net. Show progress. Return none on error.} 
    url [url!] 
    /to "Specify local file target." local-file [file! none!] 
    /local prog lo stop data stat event-port event
][
    view/new center-face lo: layout [
        backeffect [gradient 1x1 water gray] 
        space 10x8 
        vh2 300 gold "Downloading File:" 
        vtext bold center 300 to-string url 
        prog: progress 300 
        across 
        btn 90 "Cancel" [stop: true] 
        stat: text 160x24 middle
    ] 
    stop: false 
    data: read-thru/to/progress/update url local-file func [total bytes] [
        prog/data: bytes / (max 1 total) 
        stat/text: reform [bytes "bytes"] 
        show [prog stat] 
        not stop
    ] 
    unview/only lo 
    if not stop [data]
]
4

2 回答 2

3

Rebol 的读取函数一次将所有输入数据读入内存,不能用于大型数据集。您必须打开一个端口并以块的形式从中复制数据以处理大型数据集。

我认为可以修改请求下载功能以将端口用于输入和输出数据。Rebol 邮件列表中的这个线程可以帮助您:

http://www.rebol.org/ml-display-thread.r?m=rmlFQXC

您可以在 Carl 的博客http://www.rebol.com/cgi-bin/blog.r?view=0281#comments上找到更完整的示例

即使使用这种技术,在 Rebol 2 中可以处理的文件大小也有大约 2Gb 的限制。

于 2009-09-17T02:39:30.330 回答
1

试试这个

http://anton.wildit.net.au/rebol/util/batch-download.r

于 2009-09-17T10:08:21.703 回答