2009-12-29 24 views
6

क्या कोई जानता है कि फ़ाइल कैसे डाउनलोड करें (वेबपृष्ठ खोलने के बिना), और इसे Visual Basic 6.0 में किसी निर्देशिका में सहेजें?फ़ाइल डाउनलोड करें - वीबी 6

+0

** और 81 क्यू केवल 4 वोटों के साथ ??? ** –

+1

आपको अपनी पोस्ट में हस्ताक्षर शामिल करने की आवश्यकता नहीं है - आपका उपयोगकर्ता कार्ड स्वचालित रूप से जोड़ा जाता है। अधिक जानकारी के लिए [एफएक्यू] (http://stackoverflow.com/faq#signatures) पढ़ें। – Artemix

उत्तर

6

यदि आप इसे केवल कोड (इंटरनेट ट्रांसफर कंट्रोल) के साथ करना चाहते हैं, VBNet.mvps.org में वास्तव में अच्छा है कि कैसे URLDownloadToFile API कॉल का उपयोग करता है।

लेख से:

URLDownloadToFile एपीआई (Win3, WinNT3.x को छोड़कर) विंडोज ऑपरेटिंग सिस्टम के सभी संस्करणों पर उपलब्ध है। रिमोट फाइल नाम और स्थानीय फ़ाइल पथ और नाम, एपीआई निर्दिष्ट फ़ाइल को लक्ष्य नाम के रूप में सहेजने के द्वारा डाउनलोड की गई फाइलों को डाउनलोड करके। समारोह सभी फ़ाइल प्रकारों साथ काम करता है -, सादा पाठ, चित्र, एचटीएमएल, mpg, wav और ज़िप फ़ाइलें आदि फ़ाइल के लिए नियमित या चिंता करने के लिए संशोधन के बिना डाउनलोड किया जा रहा है और न ही कोई स्पष्ट आकार प्रतिबंध नहीं है या सीमा।

Private Declare Function URLDownloadToFile Lib "urlmon" _ 
    Alias "URLDownloadToFileA" _ 
    (ByVal pCaller As Long, _ 
    ByVal szURL As String, _ 
    ByVal szFileName As String, _ 
    ByVal dwReserved As Long, _ 
    ByVal lpfnCB As Long) As Long 

Private Const ERROR_SUCCESS As Long = 0 
Private Const BINDF_GETNEWESTVERSION As Long = &H10 
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000 

Public Function DownloadFile(sSourceUrl As String, _ 
          sLocalFile As String) As Boolean 

    //'Download the file. BINDF_GETNEWESTVERSION forces 
    //'the API to download from the specified source. 
    //'Passing 0& as dwReserved causes the locally-cached 
    //'copy to be downloaded, if available. If the API 
    //'returns ERROR_SUCCESS (0), DownloadFile returns True. 
    DownloadFile = URLDownloadToFile(0&, _ 
            sSourceUrl, _ 
            sLocalFile, _ 
            BINDF_GETNEWESTVERSION, _ 
            0&) = ERROR_SUCCESS 

End Function 

FYI करें - विंडोज 7 पर परीक्षण में, यह केवल कैश्ड संस्करण वापसी होगी, तो मैं पहले यह स्पष्ट करने के लिए अतिरिक्त समारोह लेख में वर्णित का इस्तेमाल किया था (और है कि काम किया)।

Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _ 
    Alias "DeleteUrlCacheEntryA" _ 
    (ByVal lpszUrlName As String) As Long 

फिर कैश को साफ़ करने के लिए उपरोक्त फ़ंक्शन को गंतव्य URL के साथ पहले कॉल करें।

+3

आपको ** एपीआई कॉल ** की आवश्यकता नहीं है, आपको ** इंटरनेट ट्रांसफर कंट्रोल की आवश्यकता नहीं है **। मूल वीबी 6 कोड का उपयोग करके बस इसे आसान तरीका करें। http://visualstudiomagazine.com/articles/2008/03/27/simple-asynchronous-downloads.aspx – MarkJ

+0

+1, इन API कॉल में मुझे परिचय देने के लिए बहुत बहुत धन्यवाद। –

0

आप इंटरनेट स्थानांतरण नियंत्रण का उपयोग एक नमूना के लिए http://www.vb-helper.com/howto_get_file_from_web.html देखने की जरूरत का उपयोग कर सुझाव है। यदि आपको प्रमाण-पत्र निर्दिष्ट करने की आवश्यकता है, तो http://support.microsoft.com/kb/173264 भी देखें।

0

मुझे इंटरनेट ट्रांसफर कंट्रोल पसंद नहीं है क्योंकि यह तुल्यकालिक है। एक बार जब आप डाउनलोड शुरू कर देते हैं तो आपका एप्लिकेशन तब तक उत्तरदायी नहीं होता जब तक फ़ाइल डाउनलोड नहीं हो जाती है या एक त्रुटि फेंक दी जाती है। एसिंक्रोनस विधियों को लिखने के लिए WININET DLL का उपयोग करने के बहुत अच्छे उदाहरण हैं। यह मामूली नहीं है, लेकिन यह भी बहुत सक्षम है। Here स्टैक ओवरफ्लो से एक उदाहरण है।

+0

यह ** ** वीबी 6 में एसिंक्रोनस डाउनलोड करने के लिए तुच्छ है और इसे एपीआई कॉल की आवश्यकता नहीं है। मेरा जवाब देखें http://stackoverflow.com/questions/1976152/download-file-vb6/1979417#1979417 – MarkJ

6

आपको एपीआई कॉल की आवश्यकता नहीं है, आपको इंटरनेट ट्रांसफर कंट्रोल की आवश्यकता नहीं है। मूल वीबी 6 कोड का उपयोग करके बस इसे आसान तरीका करें। नमूना कोड के साथ यहां एक उत्कृष्ट article by Karl Peterson है।

+0

ऐसा कुछ था जिसे मैंने पहले कभी नहीं देखा था। मेरे पास WININET लाइब्रेरी का उपयोग करके एक पूर्ण श्रेणी है, इसलिए यदि मुझे इसे वीबी में फिर से करने की ज़रूरत है तो मैं शायद इसके साथ रहूंगा, लेकिन विकल्प हमेशा अच्छा होता है। – jac

+0

यदि इंटरनेट एक्सप्लोरर की ऑफ़लाइन संपत्ति सत्य है तो यह काम नहीं करेगी। आपको एक फ़ाइल मिल जाएगी त्रुटि नहीं मिली। – kjack

-1

इस प्रयास करें:

उदाहरण::

My.Computer.Network.DownloadFile _ 
("http://www.cohowinery.com/downloads/WineList.txt", _ 
"C:\Documents and Settings\All Users\Documents\WineList.txt") 
+2

यह वीबीएनईटी की तरह दिखता है, सवाल वीबी 6 –

1

इस

Sub DownloadFile(url, path) 

    Dim objReq 
    Dim objStream 

    Set objReq = CreateObject("MSXML2.XMLHTTP") 
    objReq.Open "GET", url, False 
    objReq.send 

    If objReq.Status = 200 Then 
     Set objStream = CreateObject("ADODB.Stream") 
     objStream.Open 
     objStream.Type = 1 

     objStream.Write objReq.ResponseBody 
     objStream.Position = 0 

     objStream.SaveToFile path, 2 
     objStream.Close 
     Set objStream = Nothing 
    End If 

    Set objReq = Nothing 

End Sub 
प्रयास करें

My.Computer.Network.DownloadFile (*File to download*, *What to save it as*) 

आप इसे में एक फ़ाइल नाम क्या यह के रूप में बचाने के लिए देना चाहिए

अधिक जानकारी http://smartreferences.blogspot.in

+0

के बारे में है, मुझे नहीं पता कि इस जवाब पर कोई अंक क्यों नहीं है। यह एकमात्र उत्तर है जो वास्तव में बिना नियंत्रण नियंत्रण के काम करता है। मदद के लिए धन्यवाद। –