سؤال

لدي علامة إدخال ملف في تطبيق الويب الخاص بي. أود التحقق من أن الملف ليس كبيرا جدا قبل إرساله إلى الخادم. بالطبع، لا يزال لدي جانب خادم التحقق من الصحة. هل هناك أي طريقة للقيام بذلك مع جافا سكريبت؟ يجب أن تعمل في IE7 + و FF3 +. شكرا لك.

تحرير: somefileinputoPject.files [0] .FileSize يعمل في FF، ولكن ليس أي.

هل كانت مفيدة؟

المحلول

إنها مشكلة صعبة. عليك أن تفعل ذلك مع AJAX، واستخدم رؤوس الملفات المرسلة بواسطة المستعرض إلى الخادم على طلب المشاركة.

تحتوي مكتبة Yahoo's UI على أداة للمساعدة في هذا. yui uploader.

نصائح أخرى

لا تستطيع جافا سكريبت القيام بذلك. سيكون لها قضايا أمنية خطيرة. ربما لا يمكن فلاش.

لا يمكن القيام بذلك بشكل موثوق مع JavaScript لجميع المتصفحات، ولكن يمكنك الحد من الحجم الكلي للبيانات المنشورة من web.config

إجابة قصيرة: لا، يجب عليك التعامل مع هذا على الخادم.

إجابة طويلة: غير موثوق. مع أي يمكنك فعل شيء مثل:

function checkSize(filespec) {
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.size;
// Do something with var s
}

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

ليس لديك الكثير من الخيارات إذا كنت تستخدم عنصر تحكم إدخال الملفات التقليدي. لا يمكنك التحقق من ذلك على جانب العميل وسوف تضغط على طول MaxRequestLength الذي تم تكوينه قبل الحصول على فرصة للتحقق من جانب خادم تكنولوجيا المعلومات. يمكنك التقاط الاستثناء الذي يحدث عند تجاوز طول MaxRequestLength.

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