2014-07-21 3 views
5

निम्नलिखित कोड स्निपेट FSharp.Data वेबसाइट http://fsharp.github.io/FSharp.Data/library/Http.html में पाया जाता है। Text और Binary का प्रकार क्रमशः string और byte[] है। पूरी 2 जीबी फ़ाइल को स्मृति में प्राप्त करना अच्छा नहीं है और फिर उसे फ़ाइल में सहेजना अच्छा नहीं है।FSharp.Data के http मॉड्यूल का उपयोग करके बड़ी फ़ाइलों को कैसे डाउनलोड करें?

let logoUrl = "https://raw.github.com/fsharp/FSharp.Data/master/misc/logo.png" 
match Http.Request(logoUrl).Body with 
| Text text -> 
    printfn "Got text content: %s" text 
| Binary bytes -> 
    printfn "Got %d bytes of binary content" bytes.Length 
+4

'Http.RequestStream (logoUrl) (अपने स्वयं के जोखिम पर चलाने के लिए, यह The Infinite File Download उपयोग कर रहा है) की कोशिश करना चाहते हैं है ResponseStream.CopyTo (आउटस्ट्रीम) 'ऐसा लगता है जैसे यह ऐसा करेगा। – Daniel

+0

अच्छा, खुराक की जांच करने की आवश्यकता है कि 'अनुरोधस्ट्रीम' और 'ResponseStream' की वापसी' प्रतिक्रिया 'वस्तु शून्य नहीं है या नहीं? – ca9163d9

+1

ध्यान में रखते हुए कि यह एक एफ # -स्पेसिफिक लाइब्रेरी है, मुझे लगता है कि नहीं। – Daniel

उत्तर

2

मुझे नहीं लगता कि आप विशाल फ़ाइलों को डाउनलोड करने FSharp.Data वेबसाइट पर के रूप में ही कोड रख सकते हैं। क्या मैं बड़ी फ़ाइलों को डाउनलोड करने के लिए का उपयोग

async { 
    let! request = Http.AsyncRequestStream(logoUrl) 
    use outputFile = new System.IO.FileStream(fileName,System.IO.FileMode.Create) 
    do! request.ResponseStream.CopyToAsync(outputFile) |> Async.AwaitTaskVoid 
} |> Async.RunSynchronously 

आप अनंत फ़ाइल की जांच the complete source डाउनलोड करने के लिए

+1

AwaitTaskVoid यहां है http://stackoverflow.com/questions/8022909/how-to-async-awaittask-on-plain-task-not-taskt –

संबंधित मुद्दे