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

السؤال

نشر

كيفكم يا أصدقاء فيه عندي form  يحتوي على input عدد 3 لإرسال الصور.... انا عامل folders اسمه Good لخزن الصور المرسلة عبر ال form.... لديه مشكلة لما يتم ارسال الصور متشابه تظهر لديه في ال folder واحده فقط وانا بدي تظهر جميعها حتى لو كانت متشابه.... ارجوا المساعدة 

Recommended Posts

  • 0
نشر

الأمر بسيط كل ما عليك هو تغير إسم الصورة إلي إسم فريد قبل رفعها حيث حين يتم رفع أي ملفات وتوجد ملفات بنفس الإسم يتم الكتابة علي الملفات القديمة أي يتم مسح الملفات القديمة ووضع الملف الجديد بنفس الإسم .

ويمكنك إستخدام الدالة uniqid لتحقيق ذلك .

وهذا كود بسيط لتوضيح الأمور:

$imagePath = '/image/';
$new_name=time().uniqid(rand());
$filename = $_FILES["img"]["tmp_name"];
$ext = end((explode(".", $$_FILES["file"]["name"])));
$destFile = $imagePath . $new_name . $ext;
move_uploaded_file($filename,  $destFile);

هنا قمنا بتغير إسم الصورة إلي إسم فريد مع الإحتفاظ بالإمتداد الخاص بها .

 

  • 0
نشر (معدل)
بتاريخ 9 دقائق مضت قال محمد عاطف17:

الأمر بسيط كل ما عليك هو تغير إسم الصورة إلي إسم فريد قبل رفعها حيث حين يتم رفع أي ملفات وتوجد ملفات بنفس الإسم يتم الكتابة علي الملفات القديمة أي يتم مسح الملفات القديمة ووضع الملف الجديد بنفس الإسم .

ويمكنك إستخدام الدالة uniqid لتحقيق ذلك .

وهذا كود بسيط لتوضيح الأمور:

$imagePath = '/image/';
$new_name=time().uniqid(rand());
$filename = $_FILES["img"]["tmp_name"];
$ext = end((explode(".", $$_FILES["file"]["name"])));
$destFile = $imagePath . $new_name . $ext;
move_uploaded_file($filename,  $destFile);

هنا قمنا بتغير إسم الصورة إلي إسم فريد مع الإحتفاظ بالإمتداد الخاص بها .

 

طيب لو سمحت انا بدي بقاء الصوره القديمه وعدم حذفها او استبدالها... انا اقصد لما محمد يقدم معلوماته الخاصة ويرسل ٣ صور متشابه الخاصة فيه بدي الصور ال٣ تعرض في ال folder وليس واحده فقط.... 

تم التعديل في بواسطة Omer Amad
  • 0
نشر
بتاريخ الآن قال Omer Amad:

طيب لو سمحت انا بدي بقاء الصوره القديمه وعدم حذفها او استبدالها... انا اقصد لما محمد يقدم معلوماته الخاصة ويرسل الصور الخاصة فيه بدي الصور ال٣ تعرض في ال folder وليس واحده فقط.... 

لن يتم حذها طالما لم يتم رفع صورة لها نفس الإسم . لذلك يرجى التأكد من تغير إسم أى صورة تم رفعها حتى لا تحدث تلك المشكلة .

ولا يمكن حل تلك المشكلة حيث هذا هو طريقة عمل نظام التشغيل . لا يمكن أن يوجد ملفين في نفس المكان ولهما نفس الإسم .

ولذلك إذا تأكدت من تغير إسم الصور إلى إسم فريد فلن تحدث تلك المشكلة لديك.

  • 0
نشر
بتاريخ 4 دقائق مضت قال محمد عاطف17:

لن يتم حذها طالما لم يتم رفع صورة لها نفس الإسم . لذلك يرجى التأكد من تغير إسم أى صورة تم رفعها حتى لا تحدث تلك المشكلة .

ولا يمكن حل تلك المشكلة حيث هذا هو طريقة عمل نظام التشغيل . لا يمكن أن يوجد ملفين في نفس المكان ولهما نفس الإسم .

ولذلك إذا تأكدت من تغير إسم الصور إلى إسم فريد فلن تحدث تلك المشكلة لديك.

تغير اسم الصور سيكون تلقائي ام المتقدم يغير اسم الصورة قبل الإرسال؟ 

  • 0
نشر
بتاريخ 14 دقائق مضت قال Omer Amad:

تغير اسم الصور سيكون تلقائي ام المتقدم يغير اسم الصورة قبل الإرسال؟ 

نعم يجب أن يكون تلقائي مثل الكود الذي أرفقته لك في البداية وليس المتقدم هو من يغير الإسم حيث لن يعرف المتقدم ما هي الملفات التي لديك علي السيرفر .

فلنفرض مثلا أن المجلد الذي تقوم برفع الصور فيه يسمي images . 

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

ولكن عند تغير الإسم ستكون صورة المتقدم الأول مثل 66bba0ba904df.png حيث تم تغير الإسم تلقائيا بإسم فريد وبهذا كل متقدم يقوم برفع الصور سيتم تغير إسمها تلقائيا.

  • 0
نشر (معدل)
بتاريخ 7 دقائق مضت قال محمد عاطف17:

نعم يجب أن يكون تلقائي مثل الكود الذي أرفقته لك في البداية وليس المتقدم هو من يغير الإسم حيث لن يعرف المتقدم ما هي الملفات التي لديك علي السيرفر .

فلنفرض مثلا أن المجلد الذي تقوم برفع الصور فيه يسمي images . 

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

ولكن عند تغير الإسم ستكون صورة المتقدم الأول مثل 66bba0ba904df.png حيث تم تغير الإسم تلقائيا بإسم فريد وبهذا كل متقدم يقوم برفع الصور سيتم تغير إسمها تلقائيا.

انا لديه هذا الكود كيف يمكننا وضع الكود الذي عملته حظرتك داخل الكود تبعي

          if ($_SERVER["REQUEST_METHOD"] == "POST") {

            $ty = htmlspecialchars($_POST["ty"], ENT_QUOTES, 'UTF-8');
            $targetDir = "GOOD/";
            $uploadOk = 1;
            if ($ty == "نعم" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
                $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
                $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
                if ($_FILES["fil"]["size"] > 0.5 * MB) {
                    $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
                    $uploadOk = 0;
                    $error = true;
                }
                $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
                if (!in_array($ext, $extensions)) {
                    $errorMsg .= "\nالملف ليس صورة.";
                    $uploadOk = 0;
                    $error = true;
                }
                if ($uploadOk == 1) {
                    if (move_uploaded_file($_FILES["fil"]["tmp_name"], $targetFile)) {
                        echo "تم رفع الملف ";
                        $fil = basename($_FILES["fil"]["name"]);
                    }
                }
            } elseif ($ty == "لا" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
                $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
                $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
                if ($_FILES["fil"]["size"] > 0.5 * MB) {
                    $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
                    $uploadOk = 0;
                    $error = true;
                }
                $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
                if (!in_array($ext, $extensions)) {
                    $errorMsg .= "\nالملف ليس صورة.";
                    $uploadOk = 0;
                    $error = true;
                }
                if ($uploadOk == 1) {
                    if (move_uploaded_file($_FILES["fil"]["tmp_name"], $targetFile)) {
                        echo "تم رفع الملف ";
                        $fil = basename($_FILES["fil"]["name"]);
                    }
                }
            }
        }

 

تم التعديل في بواسطة Omer Amad
  • 0
نشر
بتاريخ 3 دقائق مضت قال Omer Amad:

انا لديه هذا الكود كيف يمكننا وضع الكود الذي عملته حظرتك داخل الكود تبعي

يمكنك إستخدام الكود التالي :

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $ty = htmlspecialchars($_POST["ty"], ENT_QUOTES, 'UTF-8');
    $targetDir = "GOOD/";
    $uploadOk = 1;
    if ($ty == "نعم" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
        $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
        if ($_FILES["fil"]["size"] > 0.5 * MB) {
            $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
            $error = true;
        }
        $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
        if (!in_array($ext, $extensions)) {
            $errorMsg .= "\nالملف ليس صورة.";
            $uploadOk = 0;
            $error = true;
        }
        if ($uploadOk == 1) {
            $new_name = time() . uniqid(rand()) . $ext;
            if (move_uploaded_file($_FILES["file3"]["tmp_name"], $targetDir . $new_name)) {
                echo "تم رفع الملف ";
                $fil = basename($_FILES["fil"]["name"]);
            }
        }
    } elseif ($ty == "لا" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
        $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
        if ($_FILES["fil"]["size"] > 0.5 * MB) {
            $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
            $error = true;
        }
        $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
        if (!in_array($ext, $extensions)) {
            $errorMsg .= "\nالملف ليس صورة.";
            $uploadOk = 0;
            $error = true;
        }
        if ($uploadOk == 1) {
            $new_name = time() . uniqid(rand()) . $ext;
            if (move_uploaded_file($_FILES["fil"]["tmp_name"], $targetDir . $new_name)) {
                echo "تم رفع الملف ";
                $fil = basename($_FILES["fil"]["name"]);
            }
        }
    }
}

وإذا كنت تضع إسم الصورة في قاعدة البيانات فيجب أخذ المتغير $new_name حيث هو إسم الصورة الجديد الذي يجب وضعه في قاعدة البيانات.

  • 0
نشر
بتاريخ 6 دقائق مضت قال محمد عاطف17:

يمكنك إستخدام الكود التالي :

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $ty = htmlspecialchars($_POST["ty"], ENT_QUOTES, 'UTF-8');
    $targetDir = "GOOD/";
    $uploadOk = 1;
    if ($ty == "نعم" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
        $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
        if ($_FILES["fil"]["size"] > 0.5 * MB) {
            $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
            $error = true;
        }
        $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
        if (!in_array($ext, $extensions)) {
            $errorMsg .= "\nالملف ليس صورة.";
            $uploadOk = 0;
            $error = true;
        }
        if ($uploadOk == 1) {
            $new_name = time() . uniqid(rand()) . $ext;
            if (move_uploaded_file($_FILES["file3"]["tmp_name"], $targetDir . $new_name)) {
                echo "تم رفع الملف ";
                $fil = basename($_FILES["fil"]["name"]);
            }
        }
    } elseif ($ty == "لا" && isset($_FILES["fil"]) && $_FILES["fil"]['size'] > 0) {
        $targetFile = $targetDir . basename($_FILES["fil"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
        if ($_FILES["fil"]["size"] > 0.5 * MB) {
            $errorMsg .= "\nعذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
            $error = true;
        }
        $ext = pathinfo($_FILES["fil"]["name"], PATHINFO_EXTENSION);
        if (!in_array($ext, $extensions)) {
            $errorMsg .= "\nالملف ليس صورة.";
            $uploadOk = 0;
            $error = true;
        }
        if ($uploadOk == 1) {
            $new_name = time() . uniqid(rand()) . $ext;
            if (move_uploaded_file($_FILES["fil"]["tmp_name"], $targetDir . $new_name)) {
                echo "تم رفع الملف ";
                $fil = basename($_FILES["fil"]["name"]);
            }
        }
    }
}

وإذا كنت تضع إسم الصورة في قاعدة البيانات فيجب أخذ المتغير $new_name حيث هو إسم الصورة الجديد الذي يجب وضعه في قاعدة البيانات.

وإذا كنت تضع إسم الصورة في قاعدة البيانات فيجب أخذ المتغير $new_name حيث هو إسم الصورة الجديد الذي يجب وضعه في قاعدة البيانات....    لم أفهم ماذا تقصد 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...