كيف يمكنني الحصول على ملف التحميل حجم بسيطة باستخدام جافا سكريبت ؟

StackOverflow https://stackoverflow.com/questions/1606842

  •  05-07-2019
  •  | 
  •  

سؤال

يجب تحميل الملف وظائف في واحدة من الصفحة.أنا التحقق من امتداد الملف باستخدام جافا سكريبت.الآن أريد أن تقييد المستخدم من تحميل الملف أكبر من 1 ميغا بايت.هل هناك أي طريقة يمكنني التحقق من تحميل الملف حجم باستخدام جافا سكريبت.

قانون بلدي حاليا تبدو مثل هذا:

<script language="JavaScript">
function validate() {
   var filename = document.getElementById("txtChooseFile").value;
   var ext = getExt(filename);
   if(ext == "txt" || ext == "csv")
      return true;
   alert("Please upload Text files only.");
   return false;
}

function getExt(filename) {
   var dot_pos = filename.lastIndexOf(".");
   if(dot_pos == -1)
      return "";
   return filename.substr(dot_pos+1).toLowerCase();
}
</script>
هل كانت مفيدة؟

المحلول

الأخرى التي aquiring اسم لا توجد وسيلة بالنسبة لك لمعرفة أي تفاصيل أخرى عن الملف في جافا سكريبت بما في ذلك حجمها.

بدلا من ذلك يجب عليك تكوين البرنامج النصي من جانب الخادم إلى كتلة المتضخم تحميل.

نصائح أخرى

http://www.w3.org/TR/FileAPI/ . كانت مدعومة من قبل فايرفوكس 3.6. أنا لا أعرف عن أي المتصفحات الأخرى.

وضمن هذا الحدث onchange من <input id="fileInput" type="file" /> ببساطة:

var fi = document.getElementById('fileInput');
alert(fi.files[0].size); // maybe fileSize, I forget

ويمكنك أيضا إعادة محتويات الملف كسلسلة، وهكذا دواليك. ولكن مرة أخرى، وهذا قد تعمل فقط مع فايرفوكس 3.6.

والآن فمن الممكن للحصول على حجم ملف باستخدام جافا سكريبت النقي. ما يقرب من جميع FileReader دعم المتصفح، والتي يمكنك استخدامها لقراءة حجم الملف وكذلك يمكنك إظهار صورة من دون تحميل الملف إلى الخادم. صلة

والرمز:

    var oFile = document.getElementById("file-input").files[0]; // input box with type file;
    var img = document.getElementById("imgtag");
    var reader = new FileReader();
    reader.onload = function (e) {
            console.log(e.total); // file size 
            img.src =  e.target.result; // putting file in dom without server upload.

   };
   reader.readAsDataURL(oFile );

ويمكنك الحصول على حجم الملف مباشرة من كائن ملف باستخدام التعليمات البرمجية التالية.

 var fileSize = oFile.size;

ومعظم هذه الإجابات هي وسيلة من خارج التاريخ. ومن الممكن حاليا تحديد حجم الملف من جانب العميل في أي متصفح يدعم API ملف. وهذا يشمل، الى حد كبير، كل المتصفحات الأخرى من IE9 وكبار السن.

قد يكون من الممكن استخدام الكثير من متصفح معين التعليمات البرمجية. نلقي نظرة على مصدر TiddlyWiki ، الذي تمكن من إنقاذ نفسها على القرص الصلب للمستخدم من خلال ربط الى ويندوز البرمجة المضيف (IE)، XPCOM (موزيلا)، وما إلى ذلك.

وأنا لا أعتقد أن هناك أي طريقة للقيام بذلك مع JS العادي من صفحة ويب.
مع متصفح التمديد ربما، ولكن من صفحة جافا سكريبت لا يمكن الوصول إلى الملفات لأسباب أمنية.

ينبغي أن يكون

وفلاش وجافا قيود مماثلة، ولكن ربما هم أقل قليلا صارمة.

وغير ممكن. سيكون مصدر قلق أمني كبير للسماح البرامج النصية جانب العميل لتشغيل يمكنه قراءة المعلومات من ملف والمستخدمين النهائيين القرص الصلب.

وانظر هنا:

HTTP: // www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

وأما بالنسبة لجميع الناس يقولون هذا الذي ينبغي القيام به من جانب الخادم، فهي تماما بقعة على ما تفعله.

في حالتي على الرغم من الحد الأقصى لحجم وسوف يستثنى هو 128MB، إذا حاول أحد المستخدمين لتحميل ما هو 130MB لا ينبغي أن يكون الانتظار لوقت التحميل 5 دقائق لمعرفة أنها كبيرة جدا لذلك أنا بحاجة للقيام الاختيار إضافية قبل أن تقدم الصفحة من أجل سهولة الاستخدام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top