من میخوام یک عکس که ارسال میشه اسمش تغییر کنه و اون اسم در دیتابیس برای نمایش در سایت ذخیره بشه .
چند تا راه حل داره
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شما میتونید فایلی را که دریافت میکنید را با اعدد چند رقمی به صورت رندم ذخیره کنید تا نام ها مشابه هم نباشند.
$filename = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($filename );@shift.delete
نمیخوام اصلا اسم فایل وجود داشته باشه .
شاید پاسخ شما همینجا باشد
@parhamdeveloper
نظرم رو ویرایش کردم ملاحظه کنید اگه کمکتون کرد اون رو به عنوان بهترین پاسخ انتخاب کنید
@Nima.nori
خیلی کمکم کرد ممنون .
@parhamdeveloper
قابلی نداشت😘.