दिलचस्प पोस्ट
रिटर्न स्टेटमेंट और ऑब्जेक्ट के बीच लाइन ब्रेक होने पर जावास्क्रिप्ट फ़ंक्शन ऑब्जेक्ट को वापस करने में विफल रहता है? 0 महीनों के साथ-साथ सभी महीनों का चयन करें एंड्रॉइड वेबव्यू जियोलोकेशन जावा का इटरेटर क्यों नहीं है? LoadFile और लोड के बीच अंतर। नेट विधानसभाओं के साथ? एमएसएसक्यूएल में वर्ष और सप्ताह संख्या से तारीख का निर्माण SQL सर्वर 2008 में पृष्ठ पर अंक लगाना कैसे करें मैं एक मोबाइल डिवाइस से एंड्रॉइड में एक फाइल एचटीटीपी के जरिए एक फाइल कैसे भेजूं? क्या SQLite के लिए कोई .NET / C # wrapper है? .NET में संसाधनों का निर्माण और उपयोग कैसे करें फ़ायरफ़ॉक्स और ओपेरा डिस्प्ले के अंदर अधिकतम-चौड़ाई क्यों नहीं दिखता है: टेबल-सेल? जावा में पैकेज निजी वर्गों के पेशेवरों और विपक्ष? मैटप्ललिब में पाठ का आंशिक रंग 'const char *' से 'चार' तक अमान्य रूपांतरण पीएचपी 5.2 के लिए डेटटाइम :: डिफ़े () के लिए क्या उपयोग कर सकते हैं?

सी / सी ++ में libcurl का उपयोग करके फ़ाइल डाउनलोड करें

मैं एक अनुप्रयोग (देव-सी ++ का उपयोग कर खिड़कियों पर) का निर्माण कर रहा हूं और मुझे यह फ़ाइल डाउनलोड करना है। मैं यह libcurl (मैं पहले से ही पैकेमैन का उपयोग कर स्रोत कोड स्थापित किया है) का उपयोग कर रहा हूं। मुझे एक काम का उदाहरण मिला ( http://siddhantahuja.wordpress.com/2009/04/12/how-to-download-a-file-from-a-url-and-save-onto-local-directory-in- c-using-libcurl / ) लेकिन यह डाउनलोड पूर्ण होने के बाद फाइल को बंद नहीं करता है। मैं किसी को एक फ़ाइल डाउनलोड करने के लिए एक उदाहरण देना चाहता हूं, या तो सी या सी ++ में अग्रिम में धन्यवाद!

वेब के समाधान से एकत्रित समाधान "सी / सी ++ में libcurl का उपयोग करके फ़ाइल डाउनलोड करें"

उदाहरण आप उपयोग कर रहे हैं गलत है। Easy_setopt के लिए मैन पेज देखें उदाहरण में write_data अपनी फाइल का उपयोग करता है, * आउटफ़ाइल, और नहीं fp जो CURLOPT_WRITEDATA में निर्दिष्ट किया गया था। यही कारण है कि एफपी बंद करने की समस्याएं आती हैं – यह भी खोला नहीं गया है।

यह अधिक या कम है कि यह कैसा दिखना चाहिए (परीक्षण के लिए यहां उपलब्ध कोई libcurl नहीं)

#include <stdio.h> #include <curl/curl.h> /* For older cURL versions you will also need #include <curl/types.h> #include <curl/easy.h> */ #include <string> size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = fwrite(ptr, size, nmemb, stream); return written; } int main(void) { CURL *curl; FILE *fp; CURLcode res; char *url = "http://localhost/aaa.txt"; char outfilename[FILENAME_MAX] = "C:\\bbb.txt"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); fclose(fp); } return 0; } 

अपडेट किया गया: जैसा कि @ rsethc types.h और easy.h द्वारा सुझाया गया है वर्तमान cURL संस्करणों में मौजूद नहीं हैं।

बस रुचि रखने वालों के लिए आप पिछले पैरामीटर के रूप में नल गुजरते हुए कस्टम फ़ंक्शन लिखने से बच सकते हैं (यदि आप वापस लौटे डेटा की अतिरिक्त प्रोसेसिंग नहीं करना चाहते हैं)
इस मामले में डिफ़ॉल्ट आंतरिक फ़ंक्शन का उपयोग किया जाता है।

विवरण
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTWRITEDATA

उदाहरण

 #include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; FILE *fp; CURLcode res; char *url = "http://stackoverflow.com"; char outfilename[FILENAME_MAX] = "page.html"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); } return 0; }