সিআরএল ব্যবহার করে কীভাবে দেহের সত্তা হিসাবে ফাইল সামগ্রী পাঠাতে হয়


207

ওয়েব সার্ভিসে HTTP পোষ্ট প্রেরণের জন্য আমি সিআরএল কমান্ড লাইন ইউটিলিটিটি ব্যবহার করছি। আমি কোনও ফাইলের বিষয়বস্তু পোস্টের বডি সত্তা হিসাবে অন্তর্ভুক্ত করতে চাই। আমি -d </path/to/filename>যেমন টাইপ তথ্যের মতো অন্যান্য রূপগুলি ব্যবহার করার চেষ্টা করেছি --data </path/to/filename> --data-urlencode </path/to/filename>... ফাইলটি সর্বদা সংযুক্ত থাকে। এটি শরীরের সত্তা হিসাবে আমার প্রয়োজন।

উত্তর:


338

আমি বিশ্বাস করি আপনি @filenameসিনট্যাক্সের সন্ধান করছেন, যেমন:

নতুন রেখা ফেলা

curl --data "@/path/to/filename" http://...

নতুন লাইন রাখুন

curl --data-binary "@/path/to/filename" http://...

=====

কার্ল ফাইল থেকে সমস্ত নতুন লাইন ছড়িয়ে দেবে। আপনি যদি নতুন --data-binaryলাইনের অক্ষত ফাইলটি প্রেরণ করতে চান তবে --data এর জায়গায় ব্যবহার করুন


21
আপনি যদি সত্যিকারের অভিনব হতে চান তবে আপনি এটি করতে পারেন: cat file.txt | curl --data "@-" `(< url.txt )` @-স্ট্রিনের কাছ থেকে কার্ল পড়তে বলে। আপনি (< x.txt )যা চান তা করতে কেবল পুনর্নির্দেশটিও ব্যবহার করতে পারেন। আপনি যদি ব্যাশ ব্যবহার করছেন
শুক্রবার

62
কার্ল ফাইল থেকে সমস্ত নতুন লাইন ছড়িয়ে দেবে। আপনি যদি নতুন লাইনের অক্ষত ফাইলটি পাঠাতে চান তবে তার --data-binaryজায়গায় ব্যবহার করুন --data
ক্রিস

এখন কেউ কীভাবে এই অনুরোধটি অনুমোদিত করতে লগইন শংসাপত্র যুক্ত করবে?
anon58192932

@ anon58192932 - এটি সার্ভারের সুরক্ষা প্রোটোকলের উপর নির্ভর করে। আপনি যদি name:valueব্যবহারকারীর নাম এবং পাসওয়ার্ডের মতো জোড়া ব্যবহার করছেন , তবে প্রয়োজনীয় শিরোনামগুলি যোগ করুন যা পরিষেবাটি প্রত্যাশায় মেলে: --header: "<header_name>:<header_value>"একক স্ট্রিং হিসাবে।
রায় হিঙ্কলি

19

আমি জানি যে প্রশ্নের উত্তর দেওয়া হয়েছে, তবে আমার ক্ষেত্রে আমি একটি পাঠ্য ফাইলের বিষয়বস্তু স্ল্যাক ওয়েবহুক এপিটিতে প্রেরণের চেষ্টা করছিলাম এবং কোনও কারণে উপরের উত্তরটি কার্যকর হয়নি। যাইহোক, অবশেষে এটিই আমার জন্য কৌশলটি করেছে:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX

এইটি বিন্দুগুলিকে আন্ডারস্কোর (। -> _) এ রূপান্তর করে না এবং নতুন লাইনে রাখে। ধন্যবাদ!
রামন ফিনকেন

1
এটি দুর্দান্ত, তবে কার্লের জন্য নির্দিষ্ট করার পরিবর্তে কমান্ড লাইনে ফাইলটি বিস্ফোরিত হওয়ায় এটি প্রশ্নের উত্তর দেয় না। আমিও ভাবছিলাম শেলের সমস্ত বিশেষ চরিত্রের পালাতে হবে কিনা - তবে আমি সে সম্পর্কে যথেষ্ট জানি না;)
জেরার্ড ওনিল

ধন্যবাদ, আপনি আমার জীবন বাঁচিয়েছেন!
অ্যারিসুইনস্নু

একটি বিশাল কন্টেন্ট ফাইলের জন্য, উপরের কার্লটি কাজ করবে না, সেক্ষেত্রে curl: argument list too longগৃহীত উত্তরটি জীবন রক্ষাকারীcurl --data "@/path/to/filename" http://...
অন্য কোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.