মাল্টিপার্ট / ফর্ম-ডেটাতে সীমানা কত?


403

আমি এই সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করতে চান multipart/form-data। HTTP শিরোনামে, আমি এটি দেখতে পাচ্ছি Content-Type: multipart/form-data; boundary=???

হয় ???বিনামূল্যে ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয়? নাকি এটি এইচটিএমএল থেকে উত্পন্ন? এটা কি আমার পক্ষে সংজ্ঞা দেওয়া সম্ভব ??? = abcdefg?


2
আমি খুঁজে পেয়েছি এটি উত্তর। w3.org/TR/html401/interact/forms.html#h-17.13.4.2
প্রশ্নগুলি

উত্তর:


424

হয় ???বিনামূল্যে ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয়?

হ্যাঁ.

বা এটি এইচটিএমএল দ্বারা সরবরাহ করা হয়?

না। এইচটিএমএল এর সাথে কিছু করার নেই । নীচের পড়া.

এটা আমার সংজ্ঞায়িত করতে সম্ভব ???হিসাবে abcdefg?

হ্যাঁ.

আপনি যদি ওয়েব সার্ভারে নিম্নলিখিত ডেটা প্রেরণ করতে চান:

name = John
age = 12

ব্যবহার application/x-www-form-urlencodedএইভাবে হবে:

name=John&age=12

আপনি দেখতে পাচ্ছেন যে সার্ভারটি জানে যে প্যারামিটারগুলি একটি এম্পারস্যান্ড দ্বারা পৃথক করা হয় &। যদি &কোনও প্যারামিটার মানের জন্য প্রয়োজন হয় তবে তা অবশ্যই এনকোড করা উচিত।

সুতরাং সার্ভারটি কীভাবে জানতে পারে যে প্যারামিটারের মানটি শুরু হয় এবং এটি কোনও HTTP অনুরোধটি ব্যবহার করার পরে শেষ হয় multipart/form-data?

সীমানা ব্যবহার করে , অনুরূপ &

উদাহরণ স্বরূপ:

--XXX
Content-Disposition: form-data; name="name"

John
--XXX
Content-Disposition: form-data; name="age"

12
--XXX--

সেক্ষেত্রে, সীমানা মান XXX। আপনি এটি Content-Typeশিরোনামে উল্লেখ করেছেন যাতে সার্ভারটি জানে যে কীভাবে এটি প্রাপ্ত ডেটা বিভক্ত করতে পারে।

সুতরাং আপনার প্রয়োজন:

  • সার্ভারে প্রেরিত HTTP ডেটাতে প্রদর্শিত হবে না এমন একটি মান ব্যবহার করুন।

  • সুসংগত থাকুন এবং অনুরোধ বার্তায় সর্বত্র একই মান ব্যবহার করুন।


54
সীমানার শেষে আপনার অতিরিক্ত "-" যোগ করতে হবে।
সেবাস্তিয়ান পিসকর্স্কি

13
আপনি এটি ডকুমেন্টেশনে পড়তে পারেন। সীমানা শেষের জন্য অতিরিক্ত দুটি হাইপেন থাকতে হবে "-" লিংক: w3.org/TR/html401/interact/forms.html#h-17.13.4.2
সেবাস্তিয়ান

6
দুর্দান্ত উত্তর। একটি সীমানা হ'ল 'কী' হ'ল একাধিক "পার্টস" কে একটি মাল্টি পার্ট লোডের আলাদা করতে। সাধারণত '&' এর মতো কিছু ভেরিয়েবলগুলি আলাদা করার জন্য যথেষ্ট তবে পে-লোডের মধ্যে থাকা পেডগুলি পৃথক করার জন্য আপনার আরও কিছু অনন্য কিছু প্রয়োজন।
ব্যবহারকারী 2483724

1
@ K3rnel31 অবশ্যই, নতুন সীমানা স্ট্রিংয়ের দৈর্ঘ্য একই না থাকলে।
অস্কার মেডেরোস

5
আমি মনে করি কন্টেন্ট-টাইপ শিরোলেখ হিসাবে ঘোষিত সীমানা মানটি আসলে -XXX --- হবে কারণ অংশগুলি পৃথক করার সময় একটি অতিরিক্ত "-" লেখা উচিত (সুতরাং --- XXX ---)
থিওডোর কে ।

96

প্রশ্নের সঠিক উত্তরটি হ'ল: হ্যাঁ, আপনি boundaryপ্যারামিটারের জন্য একটি স্বেচ্ছাচারিত মান ব্যবহার করতে পারেন , প্রদত্ত যেটি দৈর্ঘ্যে by০ বাইটের বেশি নয় এবং কেবল 7-বিটUS-ASCII (মুদ্রণযোগ্য) অক্ষর ধারণ করে ।

তোমাদের মধ্যে একজন ব্যবহার করে থাকেন multipart/*সামগ্রী প্রকার, আপনি আসলে হয় প্রয়োজনীয় নির্দিষ্ট করার boundaryমাপদণ্ড Content-Typeঅন্যথায় সার্ভার (একটি HTTP অনুরোধ ক্ষেত্রে) পে লোড বিশ্লেষণ করতে সক্ষম হবেন না হেডার।

আপনি সম্ভবত নিজের শিরোনামে charsetপ্যারামিটারটি সেট করতে চান , যদি না আপনি পুরোপুরি নিশ্চিত না হতে পারেন যে কেবলমাত্র চরসেটটি পেলোড ডেটাতে ব্যবহৃত হবে।UTF-8Content-TypeUS-ASCII

আরএফসি2020 থেকে কয়েকটি প্রাসঙ্গিক অংশ :

  • 4.1.2। চরসেট পরামিতি:

    কিছু অন্যান্য প্যারামিটার মানগুলির থেকে পৃথক, চরসেট প্যারামিটারের মানগুলি সংবেদনশীল নয়। ডিফল্ট অক্ষর সেট, যা অবশ্যই চার্সেট প্যারামিটারের অনুপস্থিতিতে অনুমান করা উচিত, এটি ইউএস-এএসসিআইআই।

  • 5.1। মাল্টিপার্ট মিডিয়া টাইপ

    কনটেন্ট-ট্রান্সফার-এনকোডিং ক্ষেত্র [আরএফসি 2045] এর সংজ্ঞা অনুসারে, "7 বিট", "8 বিট", বা "বাইনারি" ব্যতীত অন্য কোনও এনকোডিং "মাল্টিপার্ট" টাইপের সত্তার জন্য অনুমোদিত নয়। "মাল্টিপার্ট" সীমানা ডিলিমিটার এবং শিরোলেখ ক্ষেত্রগুলি সর্বদা যে কোনও ক্ষেত্রে 7 বিট ইউএস-এএসসিআইআই হিসাবে উপস্থাপিত হয় (যদিও শিরোনাম ক্ষেত্রগুলি আরএফসি 2047 অনুসারে নন-ইউএস-এএসসিআইআই শিরোনাম পাঠ্য এনকোড করতে পারে) এবং শরীরের অংশগুলির মধ্যে থাকা ডেটা একটিতে এনকোড করা যায় প্রতিটি উপযুক্ত শরীরের অংশের জন্য কন্টেন্ট-ট্রান্সফার-এনকোডিং ক্ষেত্রগুলি সহ খণ্ড খণ্ড ভিত্তিতে।

    মাল্টিপার্ট সত্তাদের জন্য সামগ্রী-প্রকারের ক্ষেত্রটির জন্য "সীমানা" একটি প্যারামিটার প্রয়োজন। সীমানা ডিলিমিটার লাইনটি তখন সম্পূর্ণরূপে দুটি হাইফেন অক্ষর ("-", দশমিক মান 45) সমন্বিত একটি লাইন হিসাবে সংজ্ঞায়িত হয় তারপরে সামগ্রী-প্রকারের শিরোলেখ ক্ষেত্র, alচ্ছিক লিনিয়ার হোয়াইটস্পেস এবং একটি সমাপ্তকারী সিআরএলএফ থেকে সীমিত প্যারামিটার মান থাকে।

    সীমানা ডিলিমিটারগুলি অবশ্যই এনক্যাপসুলেটেড উপাদানগুলির মধ্যে উপস্থিত হবে না এবং অবশ্যই দুটি শীর্ষস্থানীয় হাইফেন গণনা না করে 70 টি অক্ষরের বেশি হওয়া উচিত be

    দেহের শেষ অংশের অনুসরণ করে সীমানা ডিলিমিটার লাইন একটি বিশিষ্ট ডিলিমিটার যা নির্দেশ করে যে শরীরের আর কোনও অংশ অনুসরণ করবে না। সীমানা প্যারামিটার মানের পরে আরও দুটি হাইফেন যুক্ত হওয়ার সাথে এই জাতীয় একটি সীমানার রেখা পূর্ববর্তী ডিলিমিটার লাইনের সাথে সমান।

একটি স্বেচ্ছাচারী সীমানা ব্যবহার করে এখানে একটি উদাহরণ দেওয়া হয়েছে:

Content-Type: multipart/form-data; charset=utf-8; boundary="another cool boundary"

--another cool boundary
Content-Disposition: form-data; name="foo"

bar
--another cool boundary
Content-Disposition: form-data; name="baz"

quux
--another cool boundary--

2
আমি এই উত্তর সবচেয়ে কারণ এটি কিভাবে সম্পর্কে বোঝায় যা RFC থেকে কোট মত হাইফেন নির্দিষ্ট আছে।
রিক

@ রিক এটি করার জন্য একটি বৈধ কারণ আছে - যদিও তারা সবাই দেখতে অনেকটা একই রকম, নীচের চারটির মধ্যে একটিমাত্র সঠিক হাইফেন চরিত্র: ˗ - - -
এন্টিক্রিস

হ্যাঁ, যখন আমি হাইপেন বললাম, তার অর্থ আপনার উত্তর আমাকে বলেছিল কোনটি হাইপেনগুলি স্ট্যান্ডার্ডে সংজ্ঞায়িত করা হয়েছে। কোন হাইপেনগুলি "ক্লায়েন্ট সংজ্ঞায়িত" এবং কোনটি "স্পেসিফিকেশন সংজ্ঞায়িত"
রিক

31

মাল্টিপার্ট / ফর্ম-ডেটাতে পৃথক নাম / মান জোড়ার সীমা রয়েছে । সীমানা প্রতিটি ফর্ম জমা দেওয়ার সাথে সাথে নাম / মান জোড়ার প্রতিটি অংশের মার্কের মতো কাজ করে। সীমাটি স্বয়ংক্রিয়ভাবে একটি অনুরোধ শিরোনামের একটি সামগ্রী-ধরণের যুক্ত হয়।

সঙ্গে ফর্ম enctype = "একাধিক / ফর্ম-ডেটা" অ্যাট্রিবিউট একটি অনুরোধ হেডার সামগ্রী-প্রকার হবে: একাধিক / ফর্ম-ডেটা; সীমানা --- WebKit193844043-h ( ব্রাউজার উত্সাহিত vaue )।

উত্তীর্ণ পেডলোডটি দেখতে এরকম কিছু দেখাচ্ছে:

Content-Type: multipart/form-data; boundary=---WebKitFormBoundary7MA4YWxkTrZu0gW

    -----WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name=”file”; filename=”captcha
    Content-Type:

    -----WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name=”action

    submit
    -----WebKitFormBoundary7MA4YWxkTrZu0gW--

ওয়েব সার্ভিস দিকে, এটি @ গণমাধ্যমে ("বহুগুণ / ফর্ম-ডেটা") আকারে গ্রাস করা হয়।

সাবধান, ক্রোম পোস্টম্যান ব্যবহার করে আপনার ওয়েব সার্ভিসটি পরীক্ষা করার সময়, সংযুক্তি প্রেরণের জন্য আপনাকে ড্রপডাউন বাক্স থেকে ফর্ম ডেটা বিকল্প (রেডিও বোতাম) এবং ফাইল মেনু পরীক্ষা করতে হবে। মাল্টিপার্ট / ফর্ম-ডেটা হিসাবে সামগ্রী ধরণের স্পষ্ট বিধান একটি ত্রুটি নিক্ষেপ করে। কারণ সীমানাটি অনুপস্থিত কারণ এটি পোস্ট ম্যানটির কার্ল অনুরোধটিকে সার্ভারে কন্টেন্ট-টাইপ দিয়ে সার্ভারে বাউন্ডারিটি সীমাবদ্ধ করে উপযুক্ত কাজ করে fine

আরএফসি 1341 সেক 7.2 দেখুন মাল্টি পার্ট সামগ্রী-প্রকার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.