پرهام ناصحی
3 سال پیش توسط پرهام ناصحی مطرح شد
6 پاسخ

ارسال عکس با نام تصادفی

من میخوام یک عکس که ارسال میشه اسمش تغییر کنه و اون اسم در دیتابیس برای نمایش در سایت ذخیره بشه .


ثبت پرسش جدید
نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش آپدیت شد
1

چند تا راه حل داره
2 - استفاده از زمان حال که توی بیشتر زبان های برنامه نویسی هست مثل date() توی php
1 - تو بیشتر زبان های برنامه نویسی یه تابع هست اعداد تصادفی می سازه مثل rand() توی php :
ما یه ارایه می سازیم کاراکتر های مجاز که میشه باهاش اسم فایل رو ساخت رو توش قرار می دیم
یه حلقه میزنیم و توی اون حلقه هر بار یه کاراکتر تصادفی با استفاده از ارایه و تابعی که عدد تصادفی می سازه انتخاب می کنیم (چجوری ؟
می گیم اون تابع تصادفی یه عدد مثلا بین0 تا 5 انتخاب بکنه بعد دقیقا همون بخش از ارایه رو انتخاب می کنین : تابع میده 2 ما هم دومین اندیس ارایه رو انتخاب می کنیم و با رشته ی قبلی کانکتش می کنیم )
حالا هر وقت یه اسم جدید می سازیم نگاه می کنیم اگه همچین اسمی وجود داشت درون یک فولدر خاص مراحل رو از اول می ریم تا وقتی که نام تصادفی بیرون اومده uniq باشه
مثال کامل (البته شاید خیلی clean code نباشه)

$allowedChars = ['a','b','c'];
function randomNameCreator ( array $allowedChars , string $mime, int $length){
    $randomName = '';
    for ($i  =  0 ; $i <= $length ; i++){
        lengthOfArray = count($allowedChars);
        selectedChar =$allowedChar[rand(0,lengthOfArray)];
        $randomName .= $selectedChar;
    }
    $randomName .= $mime;
    if (file_exists(ROOTPACH.$randomName)) {
        randomNameCreator($allowedChars,$mime,$length);
    }
    return $randomName;
}

randomNameCreator($allowedChars,'jpg',2);
// examole of output
// aa.jpg

randomNameCreator($allowedChars,'jpg',2);
// example of output
//aa.jpg
// exist so again
// cb.jpg

Banana Life
@shift.delete 3 سال پیش مطرح شد
0

شما میتونید فایلی را که دریافت میکنید را با اعدد چند رقمی به صورت رندم ذخیره کنید تا نام ها مشابه هم نباشند.

$filename = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($filename );

نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش آپدیت شد
1

چند تا راه حل داره
2 - استفاده از زمان حال که توی بیشتر زبان های برنامه نویسی هست مثل date() توی php
1 - تو بیشتر زبان های برنامه نویسی یه تابع هست اعداد تصادفی می سازه مثل rand() توی php :
ما یه ارایه می سازیم کاراکتر های مجاز که میشه باهاش اسم فایل رو ساخت رو توش قرار می دیم
یه حلقه میزنیم و توی اون حلقه هر بار یه کاراکتر تصادفی با استفاده از ارایه و تابعی که عدد تصادفی می سازه انتخاب می کنیم (چجوری ؟
می گیم اون تابع تصادفی یه عدد مثلا بین0 تا 5 انتخاب بکنه بعد دقیقا همون بخش از ارایه رو انتخاب می کنین : تابع میده 2 ما هم دومین اندیس ارایه رو انتخاب می کنیم و با رشته ی قبلی کانکتش می کنیم )
حالا هر وقت یه اسم جدید می سازیم نگاه می کنیم اگه همچین اسمی وجود داشت درون یک فولدر خاص مراحل رو از اول می ریم تا وقتی که نام تصادفی بیرون اومده uniq باشه
مثال کامل (البته شاید خیلی clean code نباشه)

$allowedChars = ['a','b','c'];
function randomNameCreator ( array $allowedChars , string $mime, int $length){
    $randomName = '';
    for ($i  =  0 ; $i <= $length ; i++){
        lengthOfArray = count($allowedChars);
        selectedChar =$allowedChar[rand(0,lengthOfArray)];
        $randomName .= $selectedChar;
    }
    $randomName .= $mime;
    if (file_exists(ROOTPACH.$randomName)) {
        randomNameCreator($allowedChars,$mime,$length);
    }
    return $randomName;
}

randomNameCreator($allowedChars,'jpg',2);
// examole of output
// aa.jpg

randomNameCreator($allowedChars,'jpg',2);
// example of output
//aa.jpg
// exist so again
// cb.jpg

پرهام ناصحی
تخصص : بک‌اند کار
@parhamdeveloper 3 سال پیش مطرح شد
0

@shift.delete
نمیخوام اصلا اسم فایل وجود داشته باشه .


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
0

@parhamdeveloper
نظرم رو ویرایش کردم ملاحظه کنید اگه کمکتون کرد اون رو به عنوان بهترین پاسخ انتخاب کنید


پرهام ناصحی
تخصص : بک‌اند کار
@parhamdeveloper 3 سال پیش مطرح شد
0

@Nima.nori
خیلی کمکم کرد ممنون .


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 3 سال پیش مطرح شد
0

@parhamdeveloper
قابلی نداشت😘.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام