दिलचस्प पोस्ट
दृश्य स्टूडियो 2012 "सभी फ़ाइलें दिखाएं" बटन अनुपलब्ध है क्या url के मूल्य उद्धृत करना वास्तव में आवश्यक है? कैसे जांचें कि iframe लोड किया गया है या इसकी सामग्री है? मैं पायथन में यूआरएल से छवि डेटा कैसे पढ़ूं? सप्ताहांत के बिना दिन का अंतर दृश्य लोड होने पर AngularJS इनिशियलाइज़ कोड चलाना सीतनिद्रा में होना एक साथ कई बैग लाने नहीं कर सकते जावास्क्रिप्ट नोड लिस्ट को अर्रे में बदलने का सबसे तेज़ तरीका है? 'स्थिर' साझा करने के लिए जावा में स्थिर क्षेत्रों के साथ इंटरफेस एक सरणी में सर्वोच्च घटना के साथ तत्व प्राप्त करें मुझे कैसे पता चल सकता है कि मुझे एक स्ट्रीम से कौन सी छवि प्रारूप मिल रहा है? कोणीय जेएस सीएसएस एनीमेशन + कॉलबैक किया मैं अतुल्यकालिक फाइल कैसे अपलोड कर सकता हूं? H1 में अंतिम शब्द का रंग बदलने के लिए सीएसएस कोणीय जेएस कस्टम फिल्टर फ़ंक्शन

कर्ल का उपयोग कर एक बड़ी फ़ाइल डाउनलोड करना

मुझे कर्ल का उपयोग करके दूरस्थ फ़ाइल डाउनलोड करने की आवश्यकता है I

यहां मेरे पास नमूना कोड है:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $st = curl_exec($ch); $fd = fopen($tmp_name, 'w'); fwrite($fd, $st); fclose($fd); curl_close($ch); 

लेकिन यह बड़ी फ़ाइलों को संभाल नहीं सकता, क्योंकि यह पहले मेमोरी में पढ़ता है

क्या फ़ाइल को सीधे डिस्क पर स्ट्रीम करना संभव है?

Solutions Collecting From Web of "कर्ल का उपयोग कर एक बड़ी फ़ाइल डाउनलोड करना"

 <?php set_time_limit(0); //This is the file where we save the information $fp = fopen (dirname(__FILE__) . '/localfile.tmp', 'w+'); //Here is the file we are downloading, replace spaces with %20 $ch = curl_init(str_replace(" ","%20",$url)); curl_setopt($ch, CURLOPT_TIMEOUT, 50); // write curl response to file curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // get curl response curl_exec($ch); curl_close($ch); fclose($fp); ?> 

मैं इस काम का उपयोग करता हूँ:

इसे 4094 बाइट चरण के साथ डाउनलोड करके यह आपकी स्मृति को पूरा नहीं करेगा

 function download($file_source, $file_target) { $rh = fopen($file_source, 'rb'); $wh = fopen($file_target, 'w+b'); if (!$rh || !$wh) { return false; } while (!feof($rh)) { if (fwrite($wh, fread($rh, 4096)) === FALSE) { return false; } echo ' '; flush(); } fclose($rh); fclose($wh); return true; } 

उपयोग:

  $result = download('http://url','path/local/file'); 

आप तब जांच सकते हैं यदि सब कुछ ठीक है:

  if (!$result) throw new Exception('Download error...'); 

नीचे दिए गए कोड का पता लगाएं यदि आप निर्दिष्ट यूआरएल की सामग्री डाउनलोड करना चाहते हैं, तो उसे फाइल में सहेजना है।

 <?php $ch = curl_init(); /** * Set the URL of the page or file to download. */ curl_setopt($ch, CURLOPT_URL,'http://news.google.com/news?hl=en&topic=t&output=rss'); $fp = fopen('rss.xml', 'w+'); /** * Ask cURL to write the contents to a file */ curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec ($ch); curl_close ($ch); fclose($fp); ?> 

यदि आप FTP सर्वर से फ़ाइल डाउनलोड करना चाहते हैं तो आप php FTP एक्सटेंशन का उपयोग कर सकते हैं। कृपया नीचे कोड खोजिए:

 <?php $SERVER_ADDRESS=""; $SERVER_USERNAME=""; $SERVER_PASSWORD=""; $conn_id = ftp_connect($SERVER_ADDRESS); // login with username and password $login_result = ftp_login($conn_id, $SERVER_USERNAME, $SERVER_PASSWORD); $server_file="test.pdf" //FTP server file path $local_file = "new.pdf"; //Local server file path ##----- DOWNLOAD $SERVER_FILE AND SAVE TO $LOCAL_FILE--------## if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo "Successfully written to $local_file\n"; } else { echo "There was a problem\n"; } ftp_close($conn_id); ?> 

जब एक बड़ी फ़ाइल डाउनलोड करने के लिए curl का उपयोग किया जाता है तो CURLOPT_TIMEOUT एक मुख्य विकल्प है जिसे आपको सेट करना है।

CURLOPT_RETURNTRANSFER सच होना चाहिए अगर आप पीडीएफ / सीएसवी / इमेज जैसी फाइल प्राप्त कर रहे हैं।

आप यहां पर और विस्तार से (सही यूआरएल) कर्ल डॉक देख सकते हैं

उस पृष्ठ से:

 curl_setopt($request, CURLOPT_TIMEOUT, 300); //set timeout to 5 mins curl_setopt($request, CURLOPT_RETURNTRANSFER, true); // true to get the output as string otherwise false 

आप इस फ़ंक्शन का उपयोग कर सकते हैं, जो फाइलसिस्टम में एक tempfile बनाता है और डाउनलोड की गई फ़ाइल का पथ देता है यदि सब कुछ ठीक काम करता है:

 function getFileContents($url) { // Workaround: Save temp file $img = tempnam(sys_get_temp_dir(), 'pdf-'); $img .= '.' . pathinfo($url, PATHINFO_EXTENSION); $fp = fopen($img, 'w+'); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($ch); curl_close($ch); fclose($fp); return $result ? $img : false; }