2010-04-23 12 views
26

के साथ प्रतिक्रिया शीर्षलेख फ़ाइल नाम का उपयोग कर फ़ाइल को कैसे सहेजूं यह प्रश्न curl के कमांड लाइन संस्करण से संबंधित है।मैं कर्ल

मैं एक सीजीआई स्क्रिप्ट से एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं।

http://someserver/perl/dl.pl?ID=2

एक ब्राउज़र फ़ाइल नाम cURL 'dl.pl?ID=2'

मैं कैसे cURL को बचाने के लिए मिलता है के रूप में फ़ाइल को बचाने के लिए करना चाहता है के रूप में 'remotefilename.gz' ऊपर आता है का उपयोग करना प्रतिक्रिया शीर्षलेख से फ़ाइल नाम के साथ एक फाइल के लिए ??

उत्तर

48

यदि आपके पास पर्याप्त नया कर्ल (संस्करण 7.20.0 या बाद वाला) है, तो -J/--remote-header-name वह है जो आप चाहते हैं।

आप -O के साथ संयोजन में -जे का उपयोग करते हैं, जो यूआरएल से फ़ाइल नाम भाग को आउटपुट फ़ाइल का नाम देने के प्राथमिक तरीके के रूप में उपयोग करता है और फिर यदि कोई सामग्री-स्वभाव है: प्रतिक्रिया में शीर्षलेख, कर्ल इसके बजाय उस नाम का प्रयोग करें।

+6

के रूप में डिस्क के लिए बचाता है को बचाने के लिए है कि आप का उपयोग करना चाहिए -J/मन में है - के साथ संयोजन के रूप में रिमोट हैडर नाम -ओ/- रिमोट-नाम विकल्प अन्यथा यह काम नहीं करता है। – sepehr

+1

'-OJ' एक हत्यारा विकल्प है, यह याद रखना आसान है :) – colminator

-3

आप -o या -O विकल्प का प्रयास कर सकते हैं।

+2

-ओ एक फ़ाइल नाम के लिए पूछते हैं -O dl.pl?ID=2 – John

13
curl http://example.com/dl.php?file=3123123 -O -J 

यदि सर्वर का उपयोग करता पुनर्निर्देशन इन का उपयोग करें:

--location-trusted 
--max-redirs 10 
+0

'- स्थान-भरोसेमंद' से सावधान रहें क्योंकि यह HTTP डोमेन जानकारी को विभिन्न डोमेन पर रीडायरेक्ट करने के लिए अग्रेषित करेगा। '- स्थान 'एक सुरक्षित विकल्प की तरह लगता है। – jchook

13

मैंने पाया कि कर्ल -OJ मुझे गलती विभाजन दे रहा था: जब एक साथ कई यूआरएल डाउनलोड करने का प्रयास 11 त्रुटि।

मेरा समाधान wget का उपयोग करना था। नवीनतम संस्करण HTTP सामग्री-विस्थापन हेडर का समर्थन करता है, जिसमें अक्सर फ़ाइल नाम जानकारी होती है।

wget --content-disposition http://example.com/download/url