cUrl: तर्क सूची बहुत लंबी है


15

मुझे त्रुटि मिल रही है: Argument list too longजब मेरे JSON के शरीर के अंदर बेस 64 में एक फ़ाइल भेजने के लिए cUrl का उपयोग करने की कोशिश की जा रही है ।

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

DATA=$( base64 "$FILE" )

curl -X POST -H "Content-Type: application/json" -d '{
   "data": "'"$DATA"'"
}' $HOST

क्या मेरे JSON के शरीर में डेटा प्राप्त करने का कोई अन्य तरीका है?

इस बात पर ध्यान दें कि मुझे अपने फाइलसिस्टम में एक फाइल पढ़ने की जरूरत है, इसे बेस 64 में बदलें और फिर इसे शरीर के अंदर भेजें।


शायद संबंधित: stackoverflow.com/questions/19003855/…
fredtantini

जवाबों:


19

यदि Base64- एन्कोडेड फ़ाइल तर्क सूची में फिट होने के लिए बहुत बड़ी है, तो आपको इसे फ़ाइल के माध्यम से पास करना होगा। आसान तरीकों में से एक मैं इसे मानक इनपुट के माध्यम से पारित करने के लिए सोच सकता हूं। से कर्ल आदमी पेज , आप उपयोग कर सकते हैं -d @-आदेश पंक्ति के बजाय stdin से पढ़ने के लिए।

curl -X POST -H "Content-Type: application/json" -d @- "$HOST" <<CURL_DATA
{ "data": "$DATA" }
CURL_DATA

तुम भी इस संस्करण का उपयोग कर सकते हैं मुझे यह अधिक पसंद है:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.