কার্লের মাধ্যমে ফাইলটিতে নির্দিষ্ট করা ডেটা সহ পোষ্ট অনুরোধ পাঠান


240

কমান্ড লাইন থেকে কার্লের মাধ্যমে আমার একটি পোষ্ট অনুরোধ করতে হবে। এই অনুরোধের জন্য ডেটা একটি ফাইলে অবস্থিত। আমি জানি যে পুট মাধ্যমে এই --upload-fileবিকল্পের সাথে সম্পন্ন করা যেতে পারে ।

curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"

আমার উত্তরটি দেখুন, স্ট্যাকওভারফ্লো.com
Muhammad

1
দুঃখিত, আমি আমার সমস্যাটি ভুল করে বর্ণনা করেছি আমাকে পিএইচপি-কার্লের মাধ্যমে নয়, কেবল লিনাক্স ওএস থেকে কমান্ড লাইন থেকে কার্ল কমান্ডের মাধ্যমে অনুরোধ পাঠাতে হবে।
ব্রিডিস

উত্তর:


361

আপনি --data-binaryযুক্তিটি সন্ধান করছেন:

curl -i -X POST host:port/post-file \
  -H "Content-Type: text/xml" \
  --data-binary "@path/to/file"

উপরের উদাহরণে, -iসমস্ত শিরোনাম মুদ্রণ করে যাতে আপনি দেখতে পাচ্ছেন কী চলছে এবং -X POSTএটি স্পষ্ট করে দেয় যে এটি একটি পোস্ট। এই দুটিই তারের আচরণ পরিবর্তন না করে নিরাপদে বাদ দেওয়া যেতে পারে। ফাইলের পাথের আগে একটি @চিহ্ন থাকা উচিত, তাই curlকোনও ফাইল থেকে পড়তে জানে।


@। এই ক্ষেত্রে এটি হবে.xml
dennismonsewicz

53
@অংশ অত্যন্ত গুরুত্বপূর্ণ!
রন ক্লেইন

সুতরাং আমরা --ডাটা-বাইনারি প্যারামিটার ব্যবহার করি তবে প্রকৃত ফাইলের সামগ্রীটি পাঠ্য হতে পারে? যেহেতু এক্সএমএল সাধারণত বাইনারি হয় না।
ডেভিড

8
বাস্তবে আপনি কেবলমাত্র-
ডি

16
@ টোল 182 নতুন লাইনগুলি ছড়িয়ে -dদেবে curl, তবে তা --data-binaryকরবে না।
একিউম্যানাস

44

কমান্ড লাইন থেকে কার্লের মাধ্যমে আমার একটি পোষ্ট অনুরোধ করতে হবে। এই অনুরোধের জন্য ডেটা একটি ফাইলে অবস্থিত ...

আপনার কেবলমাত্র --dataযুক্তিটি একটি দিয়ে শুরু করা উচিত @:

curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file-path

উদাহরণস্বরূপ, যদি আপনার কাছে কোনও ফাইলের ডেটা বলা হয় stuff.xmlতবে আপনি এমন কিছু করতে পারেন:

curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path

stuff.xmlফাইলের নাম ফাইলের একটি আপেক্ষিক বা পূর্ণ পাথ দিয়ে প্রতিস্থাপিত করা যেতে পারে: @../xml/stuff.xml, @/var/tmp/stuff.xml, ...


2
আপনার যদি একটি নামযুক্ত ক্ষেত্র প্রেরণের দরকার হয় তবে আপনি এটি ব্যবহার করতে পারেন --data "name@stuff"
হারমান

15

আপনি যদি ফাইল আপলোড করতে ফর্ম ডেটা ব্যবহার করছেন, যেখানে কোনও প্যারামিটারের নামটি নির্দিষ্ট করতে হবে, আপনি ব্যবহার করতে পারেন:

curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx


ধন্যবাদ! 1. সমাধানটি আমার পক্ষে কার্যকর হয়নি। parametername=সত্যিই আমাকে সাহায্য করেছে :)
সাইবার্গ

3

বেশিরভাগ উত্তরগুলি এখানে নিখুঁত, তবে আমি যখন আমার বিশেষ সমস্যার জন্য এখানে পৌঁছলাম তখন আমাকে পোস্ট পদ্ধতি ব্যবহার করে বাইনারি ফাইল (এক্সএলএসএক্স স্প্রেড শিট) আপলোড করতে হবে, আমি একটি জিনিস অনুপস্থিত দেখতে পাচ্ছি , সাধারণত এটি কেবল আপনার লোড করা ফাইল নয়, আপনার থাকতে পারে আরো ফর্ম তথ্য উপাদান , ফাইল বা ট্যাগ মন্তব্য মত দায়ের করতে ইত্যাদি আমার ক্ষেত্রে ছিল। অতএব, আমি এটি এখানে আমার যুক্ত হিসাবে এটি যুক্ত করতে চাই, যাতে এটি অন্যকে সহায়তা করতে পারে।

curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url

0

আমাকে একটি HTTP সংযোগ ব্যবহার করতে হয়েছিল, কারণ HTTPS এ ডিফল্ট ফাইলের আকারের সীমা রয়েছে limit

https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134

    curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.