اذهب إلى المحتوى

السؤال

نشر

سلام عليكم

عملت سكربت يحدد فقط قبول الملفات من نوع zip و rar و يرفض اي نوع آخر 

لكنه يقبل فقط ملفات zip و يرفض تماما استقبال اي ملف rar 

ما هو الخطأ؟

    $(document).ready(function(){
    $(".img").change(function(){
        var allowedTypes = ['application/x-zip', 'application/zip', 'application/x-zip-compressed','application/force-download','application/x-rar', 'application/rar','application/x-rar-compressed','application/force-download','application/octet-stream'];
        var file = this.files[0];
        var fileType = file.type;
        if(!allowedTypes.includes(fileType)){
            alert('Restricted File Type, Please Select only ZIP or RAR file');
            $(".img").val('');
            return false;
        }
    });
    });

 

Recommended Posts

  • 1
نشر

لا تقرأ المتصفحات فعليًا الملف الذي يتم تحديده وإنما يتم تحديد نوع الملف بناءً على امتداده (extension)؛ سيعطي ملف صورة PNG الذي تمت إعادة تسميته إلى .txt "text/plain" وليس "image/png". بالإضافة إلى أنه يمكن الاعتماد على file.type بشكل عام فقط لأنواع الملفات الشائعة مثل الصور ومستندات HTML والصوت والفيديو.

أيضًا قد ترجع امتدادات الملفات غير المألوفة (مثل صيغة rar أو الصيغة sss) نص فارغ "". يُنصح المطورون بعدم الاعتماد على هذه الخاصية طريقة وحيدة للتحقق من نوع الملف، ويجب أن يتم التأكد من نوع الملف من خلال الواجهة الخلفية Backend أيضًا، لأنه يمكن التلاعب بكود JavaScript بسهولة في المتصفح.

لحل المشكلة مؤقتًا في الواجهة الأمامية Frontend في JavaScript يمكنك ان تتأكد من صيغة الملف zip أو rar وتضيف نص فارغ كـ Mime type على النحو التالي:

var allowedTypes = ["", 'application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/x-rar', 'application/rar','application/x-rar-compressed','application/force-download','application/octet-stream'];

بهذه الطريقة سيتم قبول ملف zip وملفات rar أيضًا، مع العلم أنه سيتم قبول أي ملف آخر بصيغة غير معروفة، لذلك يجب التأكد من أن اسم الملف يتنهي بـ .zip أو .rar

$(document).ready(function(){
    $(".img").change(function(){
        var allowedTypes = ["", 'application/x-zip', 'application/zip', 'application/x-zip-compressed','application/force-download','application/x-rar', 'application/rar','application/x-rar-compressed','application/force-download','application/octet-stream'];
        var file = this.files[0];

      // التحقق من الملف من خلال صيغته
      if (!file.name.endsWith('.zip') && !file.name.endsWith('.rar')){
            alert('Restricted File Type, Please Select only ZIP or RAR file');
            $(".img").val('');
            return false;
        }
    });
});

 

  • 1
نشر

مثلما أخبرك المدرب سامح، عليك عمل تحقق من نوع الملف في Back End حاول استخدام أحد مكتبات PHP.

يمكنك جلب لاحقة الملف :

$_FILE['input_name']['type'];

والدالة mime_content_type :

<?php
echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>

image/gif
text/plain

مكتبات:

  • mimey
  • mimeDetector
  • 0
نشر
بتاريخ 9 دقائق مضت قال محمد المصري5:

ما طبعش حاجة لما اخترت ملف rar

أحد الحلول كان بإضافة نمط فارغ '' للمصفوفة الخاصة بالتحقق

          var allowedTypes = [
            'application/x-zip',
            'application/zip',
            'application/x-zip-compressed',
            'application/force-download',
            'application/x-rar',
            'application/rar',
            'application/x-rar-compressed',
            'application/force-download',
            'application/octet-stream',
            ''    // هنا
          ]

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...