টুল
গাইড

MIME / Content-Type রেফারেন্স

রেফারেন্স

সাধারণ MIME প্রকার এবং সেগুলির ফাইল এক্সটেনশনের অনুসন্ধানযোগ্য টেবিল।

100% ক্লায়েন্ট-সাইড কোনো ব্যাকএন্ড নেই
Content-Type এক্সটেনশন বিভাগ বিবরণ
এই পৃষ্ঠায়

MIME ধরন রেফারেন্স কী?#

একটি MIME ধরন (মিডিয়া ধরন বা Content-Type নামেও পরিচিত) হলো সেই ছোট লেবেল যা গ্রহণকারীকে বলে একটি নথিতে কেমন বাইট রয়েছে: text/html হলো একটি ওয়েব পৃষ্ঠা, application/json হলো JSON ডেটা, image/png হলো একটি PNG ছবি। ফরম্যাটটি সর্বদা type/subtype — একটি বিস্তৃত বিভাগ, একটি স্ল্যাশ, তারপর একটি নির্দিষ্ট নাম। HTTP এই লেবেলগুলোর উপর নির্ভর করে সিদ্ধান্ত নিতে একটি প্রতিক্রিয়া রেন্ডার, ডাউনলোড, পার্স বা প্রত্যাখ্যান করা হবে কিনা; ব্রাউজারগুলো সঠিক হ্যান্ডলার বেছে নিতে এগুলোর উপর নির্ভর করে (একটি <img> একটি ইমেজ ধরন আশা করে, একটি <script> একটি JavaScript ধরন আশা করে); ইমেল ফাইল সংযুক্ত করতে এগুলোর উপর নির্ভর করে।

ফরম্যাটটি সহজ দেখায়, কিন্তু ল্যান্ডস্কেপটি সত্যিই বিভ্রান্তিকর। সাতটি শীর্ষ-স্তরের বিভাগ রয়েছে (application, audio, font, image, model, text, video), অনেক ফাইল বেশ কয়েকটি এক্সটেনশনের সাথে মেলে (.jpg, .jpeg, .jpe সবই image/jpeg), কিছু ধরনের একটি পুরোনো এবং একটি আধুনিক রূপ রয়েছে (application/javascript বনাম text/javascript), এবং ভুলটি বেছে নেওয়া প্রকৃত বাগ সৃষ্টি করে — text/plain হিসেবে পরিবেশিত একটি স্টাইলশিট প্রয়োগ হবে না, application/octet-stream হিসেবে পরিবেশিত একটি ফন্ট লোড হবে না। এই পৃষ্ঠাটি একটি অনুসন্ধানযোগ্য লুকআপ যাতে আপনি সর্বদা সঠিক লেবেল বেছে নেন।

যেভাবে ব্যবহার করবেন#

  1. যেকোনো কিছু দিয়ে অনুসন্ধান করুন। অনুসন্ধান বাক্সটি সম্পূর্ণ টেবিল ফিল্টার করে। তিনটি প্রশ্ন করার উপায়:
    • একটি শীর্ষে বিন্দু সহ একটি ফাইল এক্সটেনশন টাইপ করুন — .jpg, .woff2, .mp4 — এবং আপনি হুবহু সেই এক্সটেনশনে ম্যাপ করা ধরনগুলো পান।
    • ধরন বা সাবটাইপ নিজেই টাইপ করুন — image, json, svg — নাম দিয়ে সংকুচিত করতে।
    • একটি শব্দ টাইপ করুন — archive, font, spreadsheet — বিবরণগুলো অনুসন্ধান করতে।
  2. সারিটি পড়ুন। কলামগুলো হলো Content-Type (সম্পূর্ণ type/subtype), এক্সটেনশন (সাধারণ ফাইল সাফিক্স যা এতে ম্যাপ করে), বিভাগ (সাতটি শীর্ষ-স্তরের গোষ্ঠীর একটি), এবং বিবরণ (ধরনটি কীসের জন্য তার এক লাইন নোট)।
  3. সঠিকটি বেছে নিন। একটি নির্দিষ্ট এক্সটেনশনের জন্য সাধারণত একটি ক্যানোনিক্যাল ধরন থাকে; যেখানে দুটি বিদ্যমান (JavaScript কেসটি ক্লাসিক), বিবরণটি ব্যাখ্যা করে কোনটি বর্তমান।

প্রধান বৈশিষ্ট্য#

  • সাতটি বিভাগ, একটি টেবিল। Application, audio, font, image, model, text, এবং video ধরন সবই একসাথে থাকে, তাই আপনি পৃষ্ঠ পরিবর্তন না করেই একটি ফন্ট প্রশ্ন থেকে একটি ভিডিও প্রশ্নে ঝাঁপ দিতে পারেন।
  • এক্সটেনশন-ফার্স্ট লুকআপ। সাধারণ বাস্তব-বিশ্বের কাজটি হলো “আমার একটি .xlsx ফাইল আছে, Content-Type হিসেবে কী সেট করব?” — .xlsx টাইপ করা সরাসরি application/vnd.openxmlformats-officedocument.spreadsheetml.sheet-এ অবতরণ করে।
  • আধুনিক এবং লিগেসি নাম উভয়ই। যেখানে একটি ধরনের একটি পুরোনো রূপ এখনও বাস্তবে দেখা যায়, উভয়ই একটি নোট সহ তালিকাভুক্ত, তাই আপনি একটি HTTP হেডারের যেকোনো দিক চিনতে পারেন।
  • বিক্রেতা ধরন অন্তর্ভুক্ত। Microsoft Office, ZIP, gzip, 7z, RAR, WebAssembly, Web App Manifest, GraphQL — দীর্ঘ application/vnd.* এবং application/*+json/application/*+xml ফর্মগুলো সবই সেখানে আছে।
  • স্থানীয় এবং তাৎক্ষণিক। ডেটাসেট পৃষ্ঠায় এম্বেড করা; প্রতিটি অনুসন্ধান একটি ক্লায়েন্ট-সাইড ফিল্টার যার কোনো অনুরোধ নেই।

বিস্তারিত উদাহরণ#

JavaScript হলো একক সবচেয়ে বিভ্রান্তিকর এন্ট্রি, কারণ ধরনটির বছরের পর বছর নাম পরিবর্তিত হয়েছে এবং সার্ভারগুলো এখনও উভয় পাঠায়। javascript অনুসন্ধান করুন এবং আপনি দুটি সারি পান:

  • text/javascriptjs, mjs — “প্রমাণ, আধুনিক MIME ধরন।”
  • application/javascriptjs — “লিগেসি JavaScript MIME ধরন (এখনও ব্যাপকভাবে দেখা যায়)।”

সংক্ষিপ্ত সংস্করণ: text/javascript হলো যা বর্তমান HTML এবং Fetch প্রমাণগুলো আপনাকে ব্যবহার করতে বলে, এবং আধুনিক সার্ভারগুলো যা নির্গত করে; application/javascript হলো পুরোনো RFC 4329 নাম যা আপনি এখনও পুরোনো Content-Type হেডার এবং পুরোনো ডকুমেন্টেশনে দেখতে পাবেন। এগুলো একই অর্থ এবং ব্রাউজারগুলো সেগুলোকে অভিন্থভাবে আচরণ করে — কিন্তু একটি নতুন সার্ভার কনফিগারেশনের জন্য, text/javascript পছন্দ করুন।

আরও কয়েকটি মুখস্থ করার মতো লুকআপ, সবই এক অনুসন্ধান দূরে:

  • .jsonapplication/json
  • .svgimage/svg+xml (এটি একটি ছবি, কিন্তু +xml সাফিক্স এটিকে XML-ভিত্তিক হিসেবে চিহ্নিত করে)
  • .woff2font/woff2 (application/ নয়, ডেডিকেটেড font/ শীর্ষ-স্তরের বিভাগ লক্ষ্য করুন)
  • .wasmapplication/wasm (WebAssembly বাইনারি — অবশ্যই হুবহু এভাবে পরিবেশন করতে হবে, কোনো charset ছাড়া, অথবা এটি কম্পাইল হবে না)
  • .pdfapplication/pdf

যখন একটি ধরন অজানা থাকে, সার্ভারগুলো application/octet-stream-এ ফিরে যায় — জেনেরিক “এটি কিছু বাইনারি ডেটা, কিছু অনুমান করবেন না” ধরন। ব্রাউজারগুলো সাধারণত এটি প্রদর্শনের চেষ্টার বদলে ফাইলটি ডাউনলোড করে সাড়া দেয়।

সাধারণ জিজ্ঞাসা#

text/javascript নাকি application/javascript — কোনটি ব্যবহার করব?#

নতুন কোডের জন্য, text/javascript পাঠান। এটি যা বর্তমান WHATWG HTML এবং Fetch স্পেসিফিকেশনগুলো প্রয়োজন, এবং ব্রাউজারগুলো আসলে কোনটি চেক করে যখন সিদ্ধান্ত নেয় একটি <script> সম্পাদন করবে কিনা। application/javascript এখনও সর্বত্র কাজ করে (এটি পুরোনো প্রমাণ), কিন্তু এটি লিগেসি ফর্ম। আপনি যদি একটি নতুন সার্ভার, mime ডেটাবেস, বা বিল্ড টুল কনফিগার করেন, text/javascript-এ ডিফল্ট করুন।

SVG-এর ধরনে কেন +xml আছে?#

+xml সাফিক্সটি হলো একটি স্ট্রাকচার্ড-সিনট্যাক্স সাফিক্স: এটি আপনাকে বলে যে ধরনের সিরিয়ালাইজেশন অন্তর্নিহিতভাবে XML। তাই image/svg+xml মানে “একটি ছবি, বিশেষত XML-এ বর্ণিত একটি।” একই রীতি application/ld+json (লিংকড ডেটা, JSON হিসেবে সিরিয়ালাইজড) এবং application/graphql+json-এ আবির্ভূত হয়। সাফিক্সটি বোঝে এমন টুলগুলো একটি জেনেরিক XML বা JSON পার্সারে ফিরে যেতে পারে।

application/octet-stream কীসের জন্য?#

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

আমি কীভাবে আমার ফাইলে একটি Content-Type সত্যিই সেট করব?#

তা নির্ভর করে ফাইল কোথা থেকে পরিবেশিত হয় — একটি স্ট্যাটিক ফাইল সার্ভার এটিকে একটি mime ডেটাবেসের মাধ্যমে এক্সটেনশন থেকে পড়ে, একটি ওয়েব ফ্রেমওয়ার্ক এটি কোডে সেট করে (প্রায়ই response.setContentType(...) বা একটি হেডার অ্যাসাইনমেন্ট), এবং একটি CDN এটি আপলোড বা অবজেক্ট মেটাডেটায় প্রকাশ করে। সঠিক কলটি প্রতি স্ট্যাকে ভিন্ন; যে জিনিসটি অবশ্যই ঠিক হতে হবে তা হলো ওয়্যারে চূড়ান্ত স্ট্রিং, যা ঠিক এই লুকআপটি আপনাকে দেয়।