এইচটিএমএল 5 ব্যবহার করে ক্লায়েন্ট চেক করছেন ফাইলের আকার?


85

আমি এইচটিএমএল 5 তরঙ্গ চালানোর চেষ্টা করছি তবে আমি একটি ছোট সমস্যার মুখোমুখি হয়েছি। এইচটিএমএল 5 এর আগে আমরা ফ্ল্যাশ দিয়ে ফাইলের আকারটি যাচাই করতাম তবে এখন ওয়েব অ্যাপ্লিকেশনগুলিতে ফ্ল্যাশ ব্যবহার এড়াতে প্রবণতাটি রয়েছে। এইচটিএমএল 5 ব্যবহার করে ক্লায়েন্ট সাইডে ফাইলের আকার চেক করার কোনও উপায় আছে কি?

উত্তর:


128

এইটা কাজ করে. ইনপুট পরিবর্তন হওয়ার জন্য এটিকে ইভেন্ট শ্রোতার ভিতরে রাখুন।

if (typeof FileReader !== "undefined") {
    var size = document.getElementById('myfile').files[0].size;
    // check file size
}

এটি আমার কাছে আইই 10, মজিলা এফএফএক্স এবং ক্রোমে কাজ করে। ধন্যবাদ!
রহনজো

ভাল কাজ করে, আপনি কেবল এটি সঠিকভাবে ব্যবহার করছেন না; ইনপুটটির চালু ইভেন্টে লগ করুন এবং আপনি ভাল থাকবেন।
দন্ডাভিস

@ ডান্ডাভিস আমি উত্তরে কোডটি ব্যবহার করছি। কোডটি যদি ঠিকঠাক কাজ করে তবে আমার কেন এটি পরিবর্তন করা দরকার?
চক লে বাট

4
@ চাক আপনার উদাহরণটি কাজ করে না কারণ আপনি কোনও ফাইল নির্বাচন করার আগে পৃষ্ঠা লোডে ফাইল তালিকাটি পড়ার চেষ্টা করেছেন।
প্রায়

4
@ চক: ঠিক আছে, এটি ঠিক কাজ করে, এবং আপনি এটি ঠিক পেস্ট করেছিলেন তবে এটি একা যথেষ্ট নয়। আপনি যদি ফাইলটি পপুলেশন করার পরে কনসোলে চালিয়ে যান তবে আপনি এটি ঠিকঠাক কাজ করতে দেখবেন। অ্যাপ্লিকেশনগুলির জন্য, কনসোলটি ভাল নয়, সুতরাং আপনার কোড কোডটি এমন একটি ইভেন্টে রাখা উচিত যা ইনপুটটি জনপ্রিয় হওয়ার পরে চলবে, সুতরাং এটি প্রত্যাশার মতো কাজ করবে। ভুল জন্য দুঃখিত.
ডান্ডাভিস

33

গৃহীত উত্তরটি আসলে সঠিক, তবে আপনাকে এটিকে ইভেন্ট শ্রোতার সাথে আবদ্ধ করতে হবে যাতে ফাইল ইনপুট পরিবর্তিত হলে এটি আপডেট হয় update

document.getElementById('fileInput').onchange = function(){
    var filesize = document.getElementById('fileInput').files[0].size;
    console.log(filesize);    
}

আপনি যদি jQuery লাইব্রেরি ব্যবহার করেন তবে নিম্নলিখিত কোডটি কার্যকর হতে পারে

$('#fileInput').on('change',function(){
  if($(this).get(0).files.length > 0){ // only if a file is selected
    var fileSize = $(this).get(0).files[0].size;
    console.log(fileSize);
  }
});

প্রদত্ত যে ফাইলসাইজের রূপান্তর যা কখনও মেট্রিক আপনার উপর নির্ভর করে।


আপনার jQuery উদাহরণ কাজ করে না। আপনি jQuery এর সাথে ব্যবহার করতে পারবেন বলে মনে হয় না .files: jsfiddle.net/edxvo4wa (আমি যখন নিজেকে সমাধানের সাথে নিয়ে আসছিলাম তখন আমি নিজেই এটি আবিষ্কার করেছি - আপনি যদি এটিতে পরিবর্তন করেন তবে এটি কাজ করে document.getElementById)।
চক লে বাট

4
@ চেক সেখানে ত্রুটির জন্য দুঃখিত, আমি আমার উত্তরটি কর্মক্ষমটির সাথে আপডেট করেছি
আম্মাদু

7

এইচটিএমএল 5 ফি এপি ফাইলের আকার পরীক্ষা করতে সহায়তা করে।

ফাইল এপিআই সম্পর্কে আরও তথ্য পেতে এই নিবন্ধটি পড়ুন

http://www.html5rocks.com/en/tutorials/file/dndfiles/

<input type="file" id="fileInput" />


var size = document.getElementById("fileInput").files[0].size;

একইভাবে ফাইল এপিআই নাম এবং প্রকার দেয়।


3

ব্যক্তিগতভাবে, আমি এই ফর্ম্যাটটি বেছে নেব:

    $('#inputFile').bind('change', function(e) {
      var data = e.originalEvent.target.files[0];
      // and then ...
      console.log(data.size + "is my file's size");
      // or something more useful ...
      if(data.size < 500000) {
        // what your < 500kb file will do
      }
    }

4
আমি বিশ্বাস করি 500kb আসলে 500 * 1024 হবে a এটি কোনও বড় কথা নয়, তবে 500,000b ফাইল সহ শেষ ব্যবহারকারী এটি 488 কেবি হিসাবে দেখবে এবং প্রত্যাখ্যান করেছে। এবং এখানে বড় হতাশা শুরু হয়
অ্যাপোলো

2

"এটি অর্জনের জন্য কোনও সহজ, ক্রস ব্রাউজার সমাধান নেই": ক্লায়েন্টের পক্ষে ফাইল আপলোডের আকার সনাক্ত করা হচ্ছে?


10
পাশাপাশি সার্ভারের আকারের বৈধতা যুক্ত করুন তবে আপনি আধুনিক ব্রাউজারগুলির ব্যথাগুলি বাঁচাতে এবং ক্লায়েন্টের পাশাপাশি এটিও পরীক্ষা করতে পারেন।
এল ইয়োব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.