2009-09-13 4 views
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 

En fin de compte alors que la barre de progression a montré le téléchargement terminé:Rebol Request-Download ne supporte pas le gros fichier: comment corriger?

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

Comment corriger demande téléchargement car il est une fonction mezzanine:

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] 
] 
+0

Je n'ai jamais utilisé REBOL/View, donc je ne sais pas grand-chose à ce sujet, mais j'ai deux soupçons. C'est soit une limitation de read-thru ou une limitation de REBOL elle-même, qui sera probablement corrigée avec REBOL 3. –

+0

Quelle est la taille du fichier que vous essayez de télécharger? –

+0

C'est 800 Mo mais j'ai 3 Go de RAM donc ça n'aurait pas dû échouer mais c'est peut-être parce qu'il ne l'utilise pas? http://www.rebol.com/article/0199.html Mode de recherche ajouté pour un accès aléatoire aux fichiers volumineux http://community.livejournal.com/rebol Copie et contrôle des fichiers volumineux –

Répondre

3

fonctions de lecture de Rebol lire toutes les données d'entrée dans la mémoire à la fois et ne peut pas être utilisé sur de grands ensembles de données. Vous devez ouvrir un port et en copier les données en morceaux pour gérer de grands ensembles de données.

Je pense que la fonction de téléchargement de requêtes pourrait être modifiée pour utiliser des ports pour les données d'entrée et de sortie. Ce fil de la Rebol liste de diffusion peut vous aider:

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

Vous pouvez trouver un exemple plus complet sur le blog de Carl à http://www.rebol.com/cgi-bin/blog.r?view=0281#comments

Même en utilisant cette technique il y a une limite d'environ 2Gb à la taille les fichiers qui peuvent être traités dans Rebol 2.

+0

Oui il n'y a pas Vid dans l'exemple :) –

+0

Demande-téléchargement a VID . –

Questions connexes