কম্পিউটার টিউটোরিয়াল

HTML5-এ ফাইল ইনপুটে ড্র্যাগ-অ্যান্ড-ড্রপ দিয়ে ফাইল রিপপুলেট (Remember & Repopulate) করা

সমস্যা: সিকিউরিটির কারণে <input type="file">-এর value জাভাস্ক্রিপ্ট দিয়ে সেট করা যায় না

ব্রাউজার ব্যবহারকারীর ফাইল সিস্টেম অ্যাক্সেস রক্ষার জন্য প্রোগ্রাম্যাটিক্যালি ফাইল ইনপুটে ফাইল সেট করার অনুমতি দেয় না। সমাধান: Drag & Drop API + DataTransfer।

কনসেপ্ট

  1. ব্যবহারকারী ফাইল ড্র্যাগ করে আনে → drop ইভেন্টে event.dataTransfer.files পাওয়া যায়।
  2. এই FileList-কে একটি নতুন DataTransfer অবজেক্টে রাখুন।
  3. সেই DataTransfer-কে ফাইল ইনপুটের .files প্রপার্টিতে অ্যাসাইন করুন (মডার্ন ব্রাউজার সাপোর্ট করে)।

কোড উদাহরণ

 {
  dropZone.addEventListener(evt, e => { e.preventDefault(); e.stopPropagation(); dropZone.style.borderColor = '#007bff'; });
});
['dragleave', 'drop'].forEach(evt => {
  dropZone.addEventListener(evt, e => { e.preventDefault(); e.stopPropagation(); dropZone.style.borderColor = '#ccc'; });
});

dropZone.addEventListener('drop', e => {
  const files = e.dataTransfer.files;
  if (files.length) {
    // FileList → DataTransfer → input.files
    const dt = new DataTransfer();
    for (const file of files) dt.items.add(file);
    fileInput.files = dt.files; // মডার্ন ব্রাউজারই সাপোর্ট করে
    console.log('ফাইল সেট হয়েছে:', fileInput.files.length);
  }
});
</script>

নোট: input.files = dataTransfer.files অ্যাসাইনমেন্ট Chrome 82+, Firefox 78+, Edge 82+, Safari 14+ এ কাজ করে। পুরনো ব্রাউজার suport করে না।

  1. জাভাস্ক্রিপ্টে File এবং FileReader

  2. HTML5-এ ড্র্যাগ অ্যান্ড ড্রপ (Drag and Drop) ব্যবহার

  3. AJAX এবং jQuery-তে HTML5 ফাইল আপলোড ব্যবহার করা

  4. সি ভাষায় আনফরম্যাটেড ইনপুট এবং আউটপুট ফাংশন ব্যাখ্যা