• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
راهنمایی در خصوص تغییرنام فایل آپلود شده
#1
با سلام:

دوستان عزیز من میخوام واسه این تابع دستوری نوشته بشه تا یه نام رندوم برای فایل انتخاب بشه.

کد من اینه:
کد پی‌اچ‌پی:
$file_name =$_FILES['UploadedFile']['name'];
$target_path "uploads/".$file_name;
$file_name2 "template/uploads/".$file_name;

if(
move_uploaded_file($_FILES['UploadedFile']['tmp_name'], $target_path)) {

echo 
"فایل "$file_name ." با موفقیت آپلود شد";}

else {

echo 
"متاسفانه مشکلی در حین عملیات آپلود رخ داد،لطفا مجددا امتحان کنید";} 

مثلا میخوام بجای اینکه با اسم examp.jpg آپلود بشه،با کد 6522354.jpg آپلود بشه

هر استادی که بلده برام ویرایش کنه-با عرض سپاس
  پاسخ
تشکر شده توسط :
#2
اول اسم فایلو با تابع eplode کن اینجا باید با . اینکارو انجام بدی بعد بجای نام فایل نام دلخواه یا رندوم بذا مثلا
کد پی‌اچ‌پی:
$newfilename rand(1,99999) . '.' end(explode("."$_FILES["image_file"]["name"])); 
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۵ تير ۰۲, ۰۴:۵۳ ب.ظ)kasbookar نوشته: اول اسم فایلو با تابع explode کن اینجا باید با . اینکارو انجام بدی بعد بجای نام فایل نام دلخواه یا رندوم بذا مثلا
کد پی‌اچ‌پی:
$newfilename rand(1,99999) . '.' end(explode("."$_FILES["image_file"]["name"])); 

اگه امکانش هست خودتون انجام بدید-متوجه نشدم
  پاسخ
تشکر شده توسط :
#4
سخت نیستا چرا الکی خودتون گول میزنید از اشتباه نوشتن نترسید همین اشتباهات شمارو جلو میبره در غیر این صورت پیشرفت نمیکنید
کد پی‌اچ‌پی:
$file_name rand(1,99999) . '.' end(explode("."$_FILES["UploadedFile"]["name"])); 
$target_path "uploads/".$file_name;
$file_name2 "template/uploads/".$file_name;

if(
move_uploaded_file($_FILES['UploadedFile']['tmp_name'], $target_path)) {

echo 
"فایل "$file_name ." با موفقیت آپلود شد";}

else {

echo 
"متاسفانه مشکلی در حین عملیات آپلود رخ داد،لطفا مجددا امتحان کنید";} 
  پاسخ
تشکر شده توسط :
#5
ممنون برادر-پیدا کردمش-دستت درد نکنه.موفق باشید

کد پی‌اچ‌پی:
$newfilename rand(1,99999) . '.' end(explode("."$_FILES["UploadedFile"]["name"])); 
$file_name =$_FILES['UploadedFile']['name'];
$target_path "uploads/".$newfilename;
$file_name2 "template/uploads/".$newfilename;

if(
move_uploaded_file($_FILES['UploadedFile']['tmp_name'], $target_path)) {

echo 
"فایل "$newfilename ." با موفقیت آپلود شد";}

else {

echo 
"متاسفانه مشکلی در حین عملیات آپلود رخ داد،لطفا مجددا امتحان کنید";} 

اینه جوابش-ممنون
  پاسخ
تشکر شده توسط :
#6
البته کدهایی هم باید بهش اضافه بشه تا در صورتی که به صورت رندوم یه فایل جدید با یه نام تصادفی درست بشه که این نام قبلا در پوشه موجود باشه به جای فایل هم نام قبلی جایگزین نشه
  پاسخ
تشکر شده توسط : mohammadhosain
#7
.همون طور که دوستمون گفتن باید چک کنی که تو پوشه مورد نظر فایلی با این نام نباشه. طول رشته رندم تولید شهد هم باید طوری باشه که کمبود نام پیدا نکنی مثلا اگه اعداد 1 تا 5 رقمی تولید کنی فقط 99999 تا فایل می تونی تو پوشه خودت داشته باشی. اگه تعداد فایل هات زیاد می تونی از str_shuffle استفاده کنی که کاراکترهای رشته رو به صورت رندم کنار هم می چینه :
کد پی‌اچ‌پی:
<?php
do{
    
$newfilename str_shuffle('abcdefghijklmnopqrstuvwxyz') . '.' end(explode("."$_FILES["UploadedFile"]["name"]));
    
$target_path "uploads/".$newfilename;
}
while(
file_exists($target_path));

if(
move_uploaded_file($_FILES['UploadedFile']['tmp_name'], $target_path)) {

    echo 
"فایل "$newfilename ." با موفقیت آپلود شد";}

    else {

        echo 
"متاسفانه مشکلی در حین عملیات آپلود رخ داد،لطفا مجددا امتحان کنید";}
?>
  پاسخ
تشکر شده توسط :
#8
سلام
بنظر بنده میتونی ثانیه رو دریافت کنی و به آخر فایلت اضافه کنی و اگه هم خواستی دقیقه و ثانیه رو باهم اضافه کن که دیگه مطمئن باشی فایلی مشابه ایجاد نمیشه
  پاسخ
تشکر شده توسط :
#9
بعد از اينكه بررسي كردي ارايه ي FILES خالي نيست از اين كدها استفاده كن

کد پی‌اچ‌پی:
$allowtype  = array("gif","png","jpg","jpeg");
        
$explode    explode(".",$picname);
        
$trueformat end($explode);
        if(
$pictype=="image/gif" || $pictype=="image/png" || $pictype=="image/jpg" || $pictype=="image/jpeg")
        {
            
$filename md5($picname.microtime()).substr($picname,-5,5);
            
$fileurl "../../images/productimages/".$filename;[php

allowtype: فرمت قابل قبول براي اپلود
explode: تجزيه پسوند فايل براي بررسي فرمت
trueformat: با استفاده از تابعend اخرين فرمت تجزيه شده را بدست مي اوريم و تو شرط if بررسي مي كنيم

جواب سوال شما:
filename: اينجا اسم عكس رو با تابعmd5 بصورت هش شده در مياريم و همچنين اين رشته ي هش شده رو با ميكرو تايم (اين تابع تحت هيچ شرايطي مقدار تكراري برنمي گردونه) ادغام مي كنيم و با تابع substr مشخص مي كنيم كه پسوند فايل نبايد هش بشه
fileurl: اينم مسير دائمي براي اپلود هست مابقي كارهارو هم كه خودت بلدي مسير فايل رو بايد ذخيره كنيدر ديتابيس
  پاسخ
تشکر شده توسط :
#10
(۱۳۹۵ تير ۰۳, ۰۹:۱۱ ب.ظ)sardar1 نوشته: جواب سوال شما:
filename: اينجا اسم عكس رو با تابعmd5 بصورت هش شده در مياريم و همچنين اين رشته ي هش شده رو با ميكرو تايم (اين تابع تحت هيچ شرايطي مقدار تكراري برنمي گردونه) ادغام مي كنيم و با تابع substr مشخص مي كنيم كه پسوند فايل نبايد هش بشه
.درسته که میکروتایم تکراری برنمی گردونه ولی اگه داخل md5 بذاری چون md5 یک تابع هش یک به یک نیست بالاخره احتمال تولید ایجاد هش تکراری هست. در هر صورت از هر روشی که استفاده بشه بهتره چک بشه که فایلی با همون نام تو پوشه مورد نظر نباشه.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان