লিনাক্স কমান্ড লাইন টুলটি HTTP- র মাধ্যমে মাল্টিপার্ট / ফর্ম-ডেটা হিসাবে আপলোড করার জন্য?


25

আমি দেখতে পাচ্ছি যে উইজেটের একটি --post-fileবিকল্প রয়েছে তবে ম্যানপেজটি বলে says

উইজেট বর্তমানে POST ডেটা প্রেরণের জন্য মাল্টিপার্ট / ফর্ম-ডেটা সমর্থন করে না; কেবলমাত্র অ্যাপ্লিকেশন / x-www-form-urlencoded। এর মধ্যে একটি --post-dataএবং --post-fileনির্দিষ্ট করা উচিত।

মাল্টিপার্ট / ফর্ম-ডেটাতে ফাইল আপলোড করার জন্য কি একই রকম উপায় আছে?

উত্তর:


31

কার্ল ব্যবহার করুন:

curl -F "file=@localfile;filename=nameinpost" url.com

17

এটি কেবলমাত্র উইজেটের সাহায্যে করা সম্ভব। কমপক্ষে সংস্করণ 1.13.4 এবং অন্যদের সাথে with - পোষ্ট-ফাইল বিকল্পটি আপনাকে প্রেরণের জন্য একটি ফাইল নির্দিষ্ট করতে দেয়, যতক্ষণ পোস্টডাটা ফাইলটি সঠিকভাবে নির্মিত হয়।

আমি এটি বাইনারি ফাইলগুলির সাথেও পরীক্ষা করেছি এবং এটি প্রত্যাশার মতো কাজ করে। আপনার ফাইলটি বেস 64 এনকোড করার দরকার নেই, তবে আপনার ফাইলের সীমানা না রয়েছে তা নিশ্চিত করতে হবে।

এই কাজটি করার জন্য সর্বনিম্ন কমান্ডটি প্রয়োজন:

wget --header="Content-type: multipart/form-data boundary=FILEUPLOAD" --post-file postfile http://domain/uploadform

এবং পোস্টডেটা ফাইলটিতে এমন কিছু থাকা দরকার:

--FILEUPLOAD
Content-Disposition: form-data; name="comment"

I love uploading files!

--FILEUPLOAD
Content-Disposition: form-data; name="uploadFile"; filename="myfile.bin"; 
Content-Type: application/octet-stream
Media Type: application/octet-stream

Give me some automated file upload action!

--FILEUPLOAD--

বেশ কয়েকটি বিশদ এখানে গুরুত্বপূর্ণ:

  1. পোস্ট ডেটা ফাইলের লাইনগুলি \ r \ n দিয়ে শেষ করা হয়। কেবলমাত্র ব্যতিক্রম ফাইল প্রসঙ্গে থাকা ডেটা।
  2. পোস্টডেটাতে প্রতিটি বাউন্ডারি অ্যাট্রিবিউট অবশ্যই আবশ্যক কল করতে মানটি match (উদাহরণে ফাইল আপলোড করুন)
  3. সমস্ত সীমানা দুটি হাইফেনের সাথে উপসর্গযুক্ত "-" এবং \ r \ n দিয়ে সমাপ্ত হয়
  4. শেষ সীমানা দুটি অতিরিক্ত হাইফেনের সাথে প্রত্যয়িত হয়েছে "-" এবং \ r \ n দিয়ে সমাপ্ত হয়
  5. প্রতিটি টুকরো তথ্য, ফাইল সামগ্রী বা প্যারামিটার মান, খালি লাইন দ্বারা ঘিরে থাকে "\ r \ n"

আমি ভেবেছিলাম এটি কারওর সাহায্য করতে পারে যেহেতু কিছু নিয়ন্ত্রিত পরিবেশে উইজেট রয়েছে তবে কার্ল নয়।


বাইনারি ফাইল নিয়ে কাজ করার জন্য আমি উইজেট পেতে পারি না। আমি পোস্ট ডেটা ফাইলের টেক্সট অংশটি তৈরি করেছিলাম, cat pic.jpg >> postdataনোটপ্যাড ++ এ লোড করে সংরক্ষণ করেছি, ব্যবহার করেছি , এবং শেষ সীমানা + '-' + EOL এ যুক্ত করেছি। ডাব্লু 3 সি রেফারেন্স
ক্লো

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

1
একটি সেমিকোলন অনুপস্থিত। এটি পাইথন টর্নেডো - শিরোনাম = "বিষয়বস্তুর ধরণ: মাল্টিপার্ট / ফর্ম-ডেটা; সীমানা = ফাইলপ্লাউড"
ফ্ল্যাপিসকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.