تحديد حجم الصورة المرفوعة عبر php

في الكود قمت بتثبت من حجم الصورة إن كانت أكبر من 100k تظهر رسالة خطأ و لا يتم رفع الصورة، لكن المشكلة عند رفع صورة بحجم 1m أو أكثر تظهر رسالة بنجاح عملية الرفع بينما الصورة لم ترفع حقا لمجلد الصور.

نعم يوجد حلول أخري لكتابة هذا الكود بشكل صحيح لكن أريد معرفة الخطأ في هذا الكود هل المشكلة من ملف php.ini

       function upload_img_controls()
       {

        $dir_name=dirname(__FILE__)."/../admin/upload/";
        $path=@$_FILES['file_upload']['tmp_name'];
        $name=@$_FILES['file_upload']['name'];
        $fsize=$_FILES['file_upload']['size'];
        $multiext= array("gif","jpeg","jpg","png");
        $erros=array();

                $extention = strtolower(end(explode(".", $name)));
                $extcheck = in_array($extention,$multiext);
                $newname=rand(1,9999999999).'.'.$extention;

                if( !$extcheck )
                {
                    $erros[] = "<div class='msgerrorup'>Invalid file</div>";
                }

                    if( ($fsize > 100000) )
                    {
                        $erros[] =  "<div class='msgerrorup'>Image size must be 100k</div>";                  
                    }

                    if(!$newname )
                    {       
                        $erros[]  = "<div class='seccessup'>Invalid parametrs</div>";                 
                    }              
                echo finfo_file($multiext, $fsize);
    if ( count($erros) == 0 )
    {
       move_uploaded_file($path,$dir_name.$newname);  
        echo "<div class='seccessup'>Success upload</div>";
    }
    else
    {
        foreach ($erros as $erro)
        {
          echo $erro."<br />";
        }
    }
    }
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

بإمكانك ضبط الحجم الأقصى للملف الذي يستطيع المستخدم رفعه على الموقع من خلال php.ini

كود:

upload_max_filesize=100K

الكود يعمل عندي بدون مشاكل

نعم أخي الكود عندما تراه تجده صحيح فعلا و عندي تجربته يعمل بشكل صحيح لكن عند رفع صورة أكثر من 2m أو 3m فما فوق يُظهر رسالة أن الصورة تم رفعها لكنها لم ترفع فعلا للمجلد وهذا المطلوب لكن لماذا تظهر رسالة تم رفع الصورة و حجمها غير مسموح به و أيضا هي لم يتم رفعها للمجلد فعلا

صديقي انا لم اقل انه يعمل من مجرد فرأة الكود , انا نسخته وشغلته عندي ,

قمت اولا بتعطيل السطر التالي :

 echo finfo_file($multiext, $fsize);

لاني معطله من php.ini

قمت بعمل فورم بسيط يتكون من اختيار الملف وزر رفع, عدلت : $multiext= array("gif","jpeg","jpg","png");

اضفت لها ( zip ) , لرفع ملفات كبرة الحجم وكان يعطيني خطأ بان الملف المرفوع كبير (Image size must be 100k)

لدي ملاحظة بسيطة .

اضافة لطريقة التحقق من نوع الملف قم بالتأكد من mimi type فهي اضمن وافضل .

قائمة بالـ mimi type

اتمنى لك التوفيق :)

أظن أن المشلكة من الدالة finfo_file فهي ربما تقوم بشيء ما يجعل الملف لا يُرفع، فأنا أيضا قمت بتعطيل ذلك السطر والكود إشتغل بدون مشاكل...