我花了好几个小时想弄清楚这件事,看来雷贝尔就是做不到。这是一个程序,可以从网页下载所有图像。很高兴我能用更少的代码编写它,但是性能很差。下载4-5个文件后,REBOL超时。通过在循环末尾添加wait 5可以减少超时,但这需要太长时间!
一个相同的程序是用C语言编写的,它在瞬间下载了所有东西。下面是REBOL中下载图像的部分代码:
http://pastebin.com/fTnq8A3m

最佳答案

http://pastebin.com/fTnq8A3m处脚本中有许多错误
例如你有

write ... read/binary ...

所以你把图像读成二进制,然后把它写成文本。此外,当URL已经作为URL存在时,您正在处理URL作为文本!数据类型。
所以在
read/binary join http://www.rebol.com/ %image.jpg

那里的连接保持数据类型!完整的。没必要这么做
read/binary to-url join "http://www.rebol.com/" %image.jpg

这些图像有多大?
添加wait 5也不会影响下载,因为您正在尝试阻止同步下载,而且由于您正在使用一个按钮,您将在vid中,这意味着在wait中使用wait。
另一种方法是设置一个异步处理程序,然后开始下载,这样就不会像现在这样阻塞gui了。

10-04 15:33
查看更多