এনটাইটাইপ = 'গুণক / ফর্ম-ডেটা' বলতে কী বোঝায়?


উত্তর:


1569

আপনি যখন কোনও পোষ্ট অনুরোধ করেন তখন আপনাকে সেই ডেটাটি এনকোড করতে হয় যা কোনও উপায়ে অনুরোধের মূল গঠন করে।

এইচটিএমএল ফর্মগুলি এনকোডিংয়ের তিনটি পদ্ধতি সরবরাহ করে।

  • application/x-www-form-urlencoded (ডিফল্ট)
  • multipart/form-data
  • text/plain

যুক্ত করার কাজ চলছে application/json , তবে তা পরিত্যাগ করা হয়েছে।

(এইচটিটিপি অনুরোধের সাথে এইচটিএমএল ফর্ম জমা দেওয়ার চেয়ে অন্য উপায়গুলির সাহায্যে উত্পন্ন অন্যান্য এনকোডিংগুলি সম্ভব J

ফর্ম্যাটগুলির স্পেসিফিকেশন বেশিরভাগ বিকাশকারীদের কাছে আসে না। গুরুত্বপূর্ণ বিষয়গুলি হ'ল:

  • কখনও ব্যবহার করবেন না text/plain

আপনি যখন ক্লায়েন্ট-সাইড কোডটি লিখছেন:

  • multipart/form-dataযখন আপনার ফর্মটিতে কোনও <input type="file">উপাদান রয়েছে তখন ব্যবহার করুন
  • অন্যথায় আপনি ব্যবহার করতে পারেন multipart/form-dataবা application/x-www-form-urlencodedতবে application/x-www-form-urlencodedআরও কার্যকর হবে

আপনি যখন সার্ভার-সাইড কোডটি লিখছেন:

  • একটি প্রাক-লিখিত ফর্ম হ্যান্ডলিং লাইব্রেরি ব্যবহার করুন

বেশিরভাগ (যেমন পার্ল CGI->paramবা পিএইচপি'র দ্বারা উদ্ভাসিত একটি$_POST সুপারগ্লোবাল ) আপনার জন্য পার্থক্যের যত্ন নেবে। সার্ভার দ্বারা প্রাপ্ত কাঁচা ইনপুট পার্স করার চেষ্টা করে বিরক্ত করবেন না।

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


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

application/x-www-form-urlencoded কমপক্ষে URL এর শেষে ক্যোরি স্ট্রিংয়ের মতোই।

multipart/form-dataউল্লেখযোগ্যভাবে আরও জটিল তবে এটি সম্পূর্ণ ফাইলগুলিকে ডেটাতে অন্তর্ভুক্ত করার অনুমতি দেয়। ফলাফলের একটি উদাহরণ এইচটিএমএল 4 স্পেসিফিকেশনে পাওয়া যাবে ।

text/plainএইচটিএমএল 5 দ্বারা প্রবর্তন করা হয়েছে এবং কেবলমাত্র ডিবাগিংয়ের জন্যই কার্যকর - এই অনুমান থেকে : এগুলি কম্পিউটারের দ্বারা নির্ভরযোগ্যভাবে ব্যাখ্যাযোগ্য নয় - এবং আমি যুক্তি দেব যে অন্যরা সরঞ্জামগুলির সাথে মিলিত হয়েছে ( বেশিরভাগ ব্রাউজারগুলির বিকাশকারী সরঞ্জামগুলির মধ্যে নেটওয়ার্ক প্যানেলের মতো ) আরও ভাল যে জন্য).


5
@ কন্টিন আমাকে ক্ষমা করবেন, যদি আমরা সমস্ত ফর্মের জন্য মাল্টিপার্ট ব্যবহার করি তবে কোন সমস্যা হতে পারে? ফাইল এবং ঝকঝকে আউট।
ওয়েবিনান

12
এটি জিইটি ফর্মগুলির জন্য অর্থবোধ করে না এবং এটি অনুরোধগুলির ফাইল আকারকে আরও বড় করে তোলে।
কোয়ান্টিন

@ কুইন্টিন মাল্টিপার্ট ফর্ম ডেটা ডিফল্টরূপে প্রবাহ হিসাবে প্রেরণ করে?
গ্রোলার

এনটাইপযুক্ত এনক কোনও কিছুর জন্য দাঁড়ায়?
ফিলিপ রেগো

1
"এইচটিএমএল ফর্মগুলি ENC ওজিংয়ের তিনটি পদ্ধতি সরবরাহ করে "
কোয়ান্টিন

449

আমাদের কখন এটি ব্যবহার করা উচিত

কোয়ান্টিনের উত্তরটি সঠিক: multipart/form-dataফর্মটিতে কোনও ফাইল আপলোড থাকলে ব্যবহার করুন এবং application/x-www-form-urlencodedঅন্যথায়, যদি আপনি বাদ দেন তবে এটি ডিফল্ট enctype

আমি যাচ্ছি:

  • আরও কিছু HTML5 রেফারেন্স যুক্ত করুন
  • একটি ফর্ম জমা উদাহরণ সহ তিনি কেন ঠিক তা ব্যাখ্যা করুন

এইচটিএমএল 5 রেফারেন্স

আছে তিন সম্ভাবনার জন্য enctype:

উদাহরণগুলি কীভাবে উত্পন্ন করা যায়

একবার আপনি প্রতিটি পদ্ধতির উদাহরণ দেখতে পেলে এগুলি কীভাবে কাজ করে তা স্পষ্ট হয়ে যায় এবং কখন আপনার প্রতিটি ব্যবহার করা উচিত।

আপনি ব্যবহার করে উদাহরণ তৈরি করতে পারেন:

ন্যূনতম .htmlফাইলে ফর্মটি সংরক্ষণ করুন:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>upload</title>
</head>
<body>
<form action="http://localhost:8000" method="post" enctype="multipart/form-data">
  <p><input type="text" name="text1" value="text default">
  <p><input type="text" name="text2" value="a&#x03C9;b">
  <p><input type="file" name="file1">
  <p><input type="file" name="file2">
  <p><input type="file" name="file3">
  <p><button type="submit">Submit</button>
</form>
</body>
</html>

আমরা ডিফল্ট টেক্সট মান সেট a&#x03C9;b, যার মানে aωbকারণ ωহয় U+03C9, যা বাইট হয় 61 CF 89 62হল UTF-8।

আপলোড করার জন্য ফাইলগুলি তৈরি করুন:

echo 'Content of a.txt.' > a.txt

echo '<!DOCTYPE html><title>Content of a.html.</title>' > a.html

# Binary file containing 4 bytes: 'a', 1, 2 and 'b'.
printf 'a\xCF\x89b' > binary

আমাদের ছোট ইকো সার্ভারটি চালান:

while true; do printf '' | nc -l 8000 localhost; done

আপনার ব্রাউজারে এইচটিএমএল খুলুন, ফাইলগুলি নির্বাচন করুন এবং জমাতে ক্লিক করুন এবং টার্মিনালটি পরীক্ষা করুন।

nc প্রাপ্ত অনুরোধটি মুদ্রণ করে।

পরীক্ষিত: উবুন্টু 14.04.3, ncবিএসডি 1.105, ফায়ারফক্স 40।

একাধিক / ফর্ম-ডেটা

ফায়ারফক্স পাঠানো হয়েছে:

POST / HTTP/1.1
[[ Less interesting headers ... ]]
Content-Type: multipart/form-data; boundary=---------------------------735323031399963166993862150
Content-Length: 834

-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text1"

text default
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text2"

aωb
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file1"; filename="a.txt"
Content-Type: text/plain

Content of a.txt.

-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html

<!DOCTYPE html><title>Content of a.html.</title>

-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file3"; filename="binary"
Content-Type: application/octet-stream

aωb
-----------------------------735323031399963166993862150--

বাইনারি ফাইল এবং পাঠ্য ক্ষেত্রের জন্য, বাইটগুলি 61 CF 89 62( aωbইউটিএফ -8 এ) আক্ষরিকভাবে প্রেরণ করা হয়। আপনি এটি যাচাই করতে পারেন nc -l localhost 8000 | hd, যা বলে যে বাইটগুলি:

61 CF 89 62

প্রেরণ করা হয়েছিল ( 61== 'এ' এবং 62== 'বি')।

সুতরাং এটি পরিষ্কার যে:

  • Content-Type: multipart/form-data; boundary=---------------------------735323031399963166993862150সামগ্রীতে প্রকার সেট করে multipart/form-dataএবং বলে যে ক্ষেত্রগুলি প্রদত্ত boundaryস্ট্রিং দ্বারা পৃথক করা হয়েছে ।

    তবে লক্ষ করুন যে:

    boundary=---------------------------735323031399963166993862150

    --আসল বাধার চেয়ে দুটি কম ড্যাডেস রয়েছে

    -----------------------------735323031399963166993862150

    এটি কারণ দুটি স্ট্যাশ দিয়ে শুরু করার জন্য স্ট্যান্ডার্ডটির সীমা প্রয়োজন --। অন্যান্য ড্যাশগুলি ফায়ারফক্স স্বেচ্ছাসেবী সীমানা বাস্তবায়নের জন্য কীভাবে বেছে নিয়েছিল তা প্রদর্শিত হবে। আরএফসি 7578 স্পষ্টভাবে উল্লেখ করেছে যে এই দুটি শীর্ষস্থানীয় ড্যাশগুলি --প্রয়োজনীয়:

    4.1। গুণমান / ফর্ম-ডেটার "সীমানা" পরামিতি

    অন্যান্য বহুগুণিত প্রকারের মতো, অংশগুলি সীমানা ডিলিমিটারের সাথে সীমানাযুক্ত, সিআরএলএফ, "-" ব্যবহার করে নির্মিত হয় এবং "সীমানা" প্যারামিটারের মান হয়।

  • প্রতিটি ক্ষেত্র তার ডেটার আগে কিছু উপ-শিরোনাম পায়: Content-Disposition: form-data;ক্ষেত্র name, এর filename, ডেটা অনুসরণ করে।

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

    কারণ আমাদের অনন্য সীমানা, তথ্যের কোনও এনকোডিং প্রয়োজন নেই: বাইনারি ডেটা যেমন পাঠানো হয় তেমন।

    টোডো: অনুকূল সীমানা আকার ( log(N)আমি বাজি রেখেছি), এবং এটি খুঁজে পাওয়া অ্যালগরিদমের নাম / চলমান সময়টি কী? জিজ্ঞাসা করা হয়েছে: /cs/39687/find-the-shortest-sequence-that-is-not-a-sub-sequence-of-a-set-of-sequence

  • Content-Type ব্রাউজার দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত হয়।

    এটি ঠিক কীভাবে নির্ধারণ করা হয় তাতে জিজ্ঞাসা করা হয়েছিল: ব্রাউজার দ্বারা নির্ধারিত কোনও আপলোড করা ফাইলের মাইম কীভাবে হয়?

আবেদন / এক্স-WWW-ফর্ম-urlencoded

এখন পরিবর্তন enctypeকরতে application/x-www-form-urlencoded, ব্রাউজার, এবং পুনরায় জমা পুনরায় লোড করুন।

ফায়ারফক্স পাঠানো হয়েছে:

POST / HTTP/1.1
[[ Less interesting headers ... ]]
Content-Type: application/x-www-form-urlencoded
Content-Length: 51

text1=text+default&text2=a%CF%89b&file1=a.txt&file2=a.html&file3=binary

স্পষ্টতই ফাইলের ডেটা প্রেরণ করা হয়নি, কেবলমাত্র বেসনামগুলি। সুতরাং এটি ফাইলগুলির জন্য ব্যবহার করা যাবে না।

টেক্সট ক্ষেত্রের জন্য, আমরা মতো স্বাভাবিক মুদ্রণযোগ্য অক্ষর দেখতে aএবং bএক বাইট বার্তা পাঠানো হয়েছে, যখন মত মুদ্রণযোগ্য নয় এমন বেশী 0xCFএবং 0x89গ্রহণ 3 বাইট প্রতিটি: %CF%89!

তুলনা

ফাইল আপলোডগুলিতে প্রায়শই প্রিন্টযোগ্য অক্ষরগুলি থাকে (যেমন চিত্রগুলি), তবে পাঠ্য ফর্মগুলি প্রায়শই হয় না।

যে উদাহরণগুলি আমরা দেখেছি তা থেকে:

  • multipart/form-data: বার্তায় সীমানা ওভারহেডের কয়েকটি বাইট যুক্ত করে এবং এটি গণনায় কিছুটা সময় ব্যয় করতে হবে তবে প্রতিটি বাইটকে একটি বাইটে প্রেরণ করে।

  • application/x-www-form-urlencoded: ক্ষেত্রের ( &) প্রতি একক বাইট সীমানা রয়েছে তবে প্রতিটি অপ্রিন্টযোগ্য অক্ষরের জন্য 3x এর লিনিয়ার ওভারহেড ফ্যাক্টর যুক্ত করে।

সুতরাং, আমরা ফাইলগুলি প্রেরণ করতে পারলেও application/x-www-form-urlencoded, আমরা চাই না, কারণ এটি এতটা অক্ষম।

তবে পাঠ্য ক্ষেত্রগুলিতে মুদ্রণযোগ্য অক্ষরগুলির জন্য, এটি কোনও বিষয় নয় এবং কম ওভারহেড উত্পন্ন করে, তাই আমরা কেবল এটি ব্যবহার করি।


3
@ Khanna111 %CF3 বাইট দীর্ঘ: %, Cএবং F:-) এটা মানুষের পাঠযোগ্য উপার্জন গল্প।
সিরো সান্তিলি: 病毒 审查 六四 事件 法轮功

6
ওএস এক্স-এ, একই সাথে ncউভয় -lএবং -pযুক্তি উভয়ই গ্রহণ করবে না । কিন্তু এই আমার জন্য কাজ করে: while true; do printf '' | nc -l 8000; done
ফিলিপস

4
একটি ছোট তবে গুরুত্বপূর্ণ পয়েন্ট যা উল্লেখ করা হয়নি তা হ'ল যে সীমাটি নির্দিষ্ট করা হয়েছে Content-Typeতার দুটি হাইফেন ( --) কম রয়েছে, অর্থাত্ যখন বার্তাটির শরীরে সীমানাটি ব্যবহার করার সময় আপনাকে অবশ্যই এটির উপসর্গ দিয়ে যেতে হবে --। এছাড়াও, শেষ সীমানাটি অবশ্যই প্রত্যয়যুক্ত হওয়া উচিত --, তবে এটি লক্ষ্য করা যথেষ্ট সহজ। দেখুন stackoverflow.com/questions/3508252/...
বার্নার্ড

1
যতদূর আমি বলতে পারি, সীমানায় যে কোনও ড্যাশ রাখার বিষয়টি হ'ল চোখের মাধ্যমে অনুরোধের বাক্য গঠনটি পরীক্ষা করা অসম্ভব হয়ে পড়ে। দয়া করে এগুলি আপনার সীমানা টোকেনগুলিতে ব্যবহার করবেন না।
দেবী মরগান

1
@ দেবীমোরগান আপনি পুরোপুরি ঠিক আছেন আমি পোস্টটি সম্পাদনা করেছি এবং সীমানা স্ট্রিং থেকে ড্যাশগুলি সরিয়েছি।
সর্বোচ্চ

91

enctype='multipart/form-dataএকটি এনকোডিং টাইপ যা কোনও পোস্টের মাধ্যমে ফাইলগুলি প্রেরণের অনুমতি দেয় । বেশ সহজভাবে, এই এনকোডিং ব্যতীত ফাইলগুলি পোস্টের মাধ্যমে প্রেরণ করা যায় না ।

আপনি যদি কোনও ব্যবহারকারীকে কোনও ফর্মের মাধ্যমে কোনও ফাইল আপলোড করার অনুমতি দিতে চান তবে আপনাকে অবশ্যই এই এনটাইপটি ব্যবহার করতে হবে ।


সুতরাং .. যদি ফাইলটি বাইনারি ফাইল না হয় তবে আমরা কি এটি ছাড়া কাজ করতে পারি?
যুগাল জিন্দল

আমি যা বুঝি সেগুলি থেকে আপনি multipart/form-dataনন-বাইনারি ফাইল প্রেরণের জন্য ব্যবহার করতে পারেন তবে এটি অদক্ষ। আমি বিশ্বাস করি application/x-www-form-urlencodedনন-বাইনারি ডেটা প্রেরণের সঠিক উপায় তবে নন-বাইনারি ফাইলগুলির সাথে আরও অভিজ্ঞতার সাথে আমাকে সংশোধন করার প্রয়োজন হতে পারে।
ম্যাট আসবুরি

11
multipart/form-dataকোনও ফাইল প্রেরণের জন্য প্রধান সুবিধাটি হ'ল এটি সম্মুখভাগ এবং ব্যাকএন্ড উভয় ক্ষেত্রে স্বয়ংক্রিয়ভাবে কাজ করবে। আপনাকে কোনও বিশেষ হ্যান্ডলিং করতে হবে না। সমস্ত ফাইল বাইনারি হয় এমনকি যদি তাদের কেবল পাঠ্য থাকে contain application/x-www-form-urlencodedসংযুক্ত ফাইল ছাড়াই কোনও ফর্ম পোস্ট করার মানক উপায়। multipart/form-dataসংযুক্ত ফাইল (গুলি) সহ একটি ফর্ম পোস্ট করার মানক উপায়। (এছাড়াও যেমন অনেক অন্যান্য এনকোডিং হয় application/jsonএবং application/json-patch+jsonযা সার্ভার এবং ক্লায়েন্ট মধ্যে যোগাযোগের জন্য সাধারণ।)
ড্যানিয়েল লুনা

6
এটি উল্লেখ করার উপযুক্ত আপনি আপনার চিত্রটি এনকোড করতে পারেন এবং এটি সরল স্ট্রিং ডেটা হিসাবে প্রেরণ করতে পারেন।
জেমস

3
উপরে @ প্রসপেরোর মন্তব্যটিতে আরও: আপনি একেবারে ব্যবহার না করে পোষ্টের মাধ্যমে ফাইল পাঠাতে পারেন multipart/form-data। আপনি যা করতে পারবেন না তা হ'ল জাভাস্ক্রিপ্ট ছাড়াই একটি সাধারণ এইচটিএমএল ফর্ম জমা ব্যবহার করা। ব্যবহারের multipart/form-dataজন্য ফর্ম সেট করা একমাত্র প্রক্রিয়া যা এইচটিএমএল আপনাকে জাভাস্ক্রিপ্ট ব্যবহার না করেই ফাইল পোস্ট করতে দেয়। আমি মনে করি এটি উত্তরে যথেষ্ট পরিস্কার নয়, এবং একজন নিরীহ পাঠক মনে করতে পারেন যে ফাইলগুলি প্রেরণ করতে অক্ষমতা এইচটিটিপিmultipart/form-data - একটি সীমাবদ্ধতা ; এটা কেস নয়।
মার্ক অ্যামেরি

81

কোনও ফর্ম জমা দেওয়ার সময়, আপনি আপনার ব্রাউজারটি HTTP প্রোটোকলের মাধ্যমে, নেটওয়ার্কে একটি বার্তা প্রেরণ করতে বলেন, সঠিকভাবে একটি TCP / IP প্রোটোকল বার্তা কাঠামোটিতে আবদ্ধ। এইচটিএমএল পৃষ্ঠার সার্ভারে ডেটা প্রেরণের একটি উপায় রয়েছে: <form>গুলি ব্যবহার করে ।

যখন কোনও ফর্ম জমা দেওয়া হয়, একটি HTTP অনুরোধ তৈরি করা হয় এবং সার্ভারে প্রেরণ করা হয়, বার্তায় ফর্মের ফিল্ডের নাম এবং ব্যবহারকারীর দ্বারা ভরাট মানগুলি থাকবে contain এই সংক্রমণ সঙ্গে ঘটতে পারে POSTবা GET HTTP- র পদ্ধতি

  • POST আপনার ব্রাউজারকে একটি এইচটিটিপি বার্তা তৈরি করতে এবং সমস্ত বিষয়বস্তুকে বার্তাটির শিরোনামে রাখতে বলে (জিনিসগুলি করার একটি খুব কার্যকর উপায়, আরও সুরক্ষিত এবং নমনীয়ও)।
  • GETক্যোরিস্ট্রিংয়ে ফর্ম ডেটা জমা দেবে । এটিতে ডেটা উপস্থাপন এবং দৈর্ঘ্য সম্পর্কে কিছু প্রতিবন্ধকতা রয়েছে।

কীভাবে আপনার ফর্মটি সার্ভারে প্রেরণ করবেন তা উল্লেখ করে

মেথড enctypeব্যবহার POSTকরার সময় অ্যাট্রিবিউটের জ্ঞান থাকে । নির্দিষ্ট করা থাকলে, এটি ব্রাউজারটিকে নির্দিষ্ট উপায়ে এনটাক্ট করে ফর্মটি প্রেরণ করতে নির্দেশ দেয়। এমডিএন থেকে - ফর্ম এনটাইপ :

যখন পদ্ধতির বৈশিষ্ট্যের মান পোস্ট হয়, এনক্টাইপ হ'ল মাইম টাইম সামগ্রী যা সার্ভারে ফর্মটি জমা দেওয়ার জন্য ব্যবহৃত হয়।

  • application/x-www-form-urlencoded: এটি ডিফল্ট। ফর্মটি প্রেরণ করা হলে, সমস্ত নাম এবং মান সংগ্রহ করা হয় এবং ইউআরএল এনকোডিং চূড়ান্ত স্ট্রিংয়ে সঞ্চালিত হয়।
  • multipart/form-data: অক্ষরগুলি এনকোড করা হয়নি। যখন ফর্মটিতে একটি ফাইল আপলোড নিয়ন্ত্রণ থাকে তখন এটি গুরুত্বপূর্ণ। আপনি ফাইলটি বাইনারি প্রেরণ করতে চান এবং এটি নিশ্চিত করে যে বিটস্ট্রিম পরিবর্তন করা হয়নি।
  • text/plain: স্পেসগুলি রূপান্তরিত হয়, তবে আর কোনও এনকোডিং করা হয় না।

নিরাপত্তা

ফর্মগুলি জমা দেওয়ার সময়, কিছু সুরক্ষা উদ্বেগ আরএফসি 7578 বিভাগ 7 অনুযায়ী বর্ণিত হতে পারে : মাল্টিপার্ট ফর্ম ডেটা - সুরক্ষা বিবেচনা :

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

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

কনটেন্ট-
ডিসপজিশন শিরোনাম ক্ষেত্রের ফাইলের নাম ব্যাখ্যা করার সময় এটি গুরুত্বপূর্ণ, প্রযোজকের
ফাইল স্পেসে অজান্তে ফাইল ওভাররাইট না করা।

এটি আপনাকে উদ্বেগ দেয় যদি আপনি বিকাশকারী হন এবং আপনার সার্ভার ব্যবহারকারীদের দ্বারা জমা দেওয়া ফর্মগুলি প্রক্রিয়া করবে যা সংবেদনশীল তথ্য ধারণ করে।


1
সর্বাধিক সাম্প্রতিক সম্পাদনার পরে সুরক্ষা সম্পর্কিত স্টাফগুলি কী করবে তা নিয়ে প্রশ্নই অপ্রাসঙ্গিক enctype। আমি জানি এটা থেকে আক্ষরিক এর multipart/form-dataজন্য RFC কিন্তু তা সত্ত্বেও এটা ফরম যে সম্পূর্ণরূপে তথ্য হিসাবে পাঠানো হয় কিনা লম্ব হয় জমা দেওয়ার সম্পর্কে নিরাপত্তা কারণগুলো একটি অবাধ ডাম্প এর application/x-www-form-urlencodedবা multipart/form-data
মার্ক অ্যামেরি

38

enctype='multipart/form-data'এর অর্থ কোনও অক্ষর এনকোড হবে না। এই কারণেই সার্ভারে ফাইলগুলি আপলোড করার সময় এই ধরণের ব্যবহার করা হয়।
সুতরাং multipart/form-dataযখন কোনও ফর্মের কোনও ফাইলের বিষয়বস্তুর মতো বাইনারি ডেটা আপলোড করার প্রয়োজন হয় তখন তা ব্যবহৃত হয়


8

POST এ পদ্ধতিটির বৈশিষ্ট্যটি সেট করুন কারণ ফর্মটি ব্যবহার করে কোনও ফাইলের URL প্যারামিটারের মধ্যে ফাইল সামগ্রী রাখা যায় না।

এনটাইটাইপের মানটি মাল্টিপার্ট / ফর্ম-ডেটাতে সেট করুন কারণ ডেটা একাধিক অংশে বিভক্ত হবে, প্রতিটি ফাইলের জন্য একটি এবং ফর্ম বডিটির পাঠ্য যা তাদের সাথে প্রেরণ করা যেতে পারে।


এর দ্বারা বোঝা যায় যে POSTকোনও ফর্মের মাধ্যমে ফাইল জমা দেওয়ার পক্ষে যথেষ্ট এবং সম্ভবত multipart/form-dataকিছু অস্পষ্ট উপায়ে যোগ করা বোনাস। বিষয়টি তেমন নয়। বেশিরভাগ ফাইলের একেবারে ব্যবহারের প্রয়োজন হবে multipart/form-data
আন্ডারস্কোর_১১

1
  • এনটাইটাইপ ( ENC ode TYPE ) বৈশিষ্ট্যটি সার্ভারে জমা দেওয়ার সময় ফর্ম-ডেটা কীভাবে এনকোড করা উচিত তা নির্দিষ্ট করে।
  • মাল্টিপার্ট / ফর্ম-ডেটা এনকটাইপ অ্যাট্রিবিউটের অন্যতম মান, যা ফর্ম উপাদানটিতে ব্যবহৃত হয় যা একটি ফাইল আপলোড করে। বহু অংশের অর্থ ফর্ম ডেটা একাধিক অংশে বিভক্ত হয়ে সার্ভারে প্রেরণ।

5
আমি বিশ্বাস করি enctype এনক্রিপশন টাইপ জন্য দাঁড়ানো না। এই স্তরে কোনও এনক্রিপশন জড়িত নেই। আমার অনুমান হয় হয় এনকোডিং টাইপ বা সংযুক্ত প্রকার। তবে অবশ্যই এটি এনক্রিপশন ধরণের নয়।
ইয়েও

1
আপনার চূড়ান্ত বুলেট পয়েন্টটি এখানে সম্পর্কিত <head>এবং <body>অপ্রাসঙ্গিক এবং বিভ্রান্তিকর।
মার্ক অ্যামেরি

0

সাধারণত এটি যখন আপনার কোনও পোষ্ট ফর্ম থাকে যা ডেটা হিসাবে কোনও ফাইল আপলোড নিতে হয় ... এটি সার্ভারকে জানায় যে এটি কীভাবে স্থানান্তরিত ডেটা এনকোড করবে, সেক্ষেত্রে এটি এনকোড হবে না কারণ এটি কেবল স্থানান্তর এবং আপলোড হবে সার্ভারে ফাইলগুলি, উদাহরণস্বরূপ কোনও চিত্র বা পিডিএফ আপলোড করার সময়


-3

এনকটাইপ বৈশিষ্ট্যটি সার্ভারে জমা দেওয়ার সময় ফর্ম-ডেটা কীভাবে এনকোড করা উচিত তা নির্দিষ্ট করে।

এনটাইপ বৈশিষ্ট্যটি শুধুমাত্র পদ্ধতি = "পোস্ট" ব্যবহার করা যেতে পারে।

কোনও অক্ষর এনকোড করা হয়নি। আপনি যখন ফাইল আপলোড নিয়ন্ত্রণ করে এমন ফর্মগুলি ব্যবহার করছেন তখন এই মানটির প্রয়োজন হয়

ডাব্লু 3 স্কুল থেকে


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