PDA

View Full Version : مشکل من با اپلود فایل



boysilent
پنج شنبه 01 تیر 1391, 12:59 عصر
سلام دوستان من برای اپلود کردن نیاز به یه کمک دارم بنده وقتی اپلود میکنم و تکراری باشه؟چکاز باید بکنم که این تکراری بودن از بین بره؟مثلا ساعت سیستم رومیشه اضافه کرد؟ولی فقط به پایگاه اضافه میشه نام فایل تغییر نمیکنه میشه کمک کنید

djsaeedkhan
پنج شنبه 01 تیر 1391, 13:42 عصر
سلام
شما ممکنه فایل رو به همون اسمی که هست ذخیره کنید. در این صورت اتوماتیک با همنام قبلی جایگزین میشه. ولی اگر شما میای اسم رو عوض می کنی و به یه نام غیر تکراری تبدیلش می کنی و ذخیره می کنی. باید با توجه به مشخصاتی که از اون فایل در دیتابیس داری بگردی و اون رو حذف کنی (Unlink) و فایل جدید رو ذخیره کنی.
همه اینا بستگی داره شما چطور فایل رو ذخیره کنی

boysilent
پنج شنبه 01 تیر 1391, 13:52 عصر
ممنون ولی من هیچ اطلاعاتی در مورد این بخش ندارم میشه یه مثال بدید ممنون

djsaeedkhan
پنج شنبه 01 تیر 1391, 14:03 عصر
خوب شما لطفا اول نمونه ها رو ببین اگر مشکلی بود بفرمایید
http://www.google.com/#hl=fa&site=&source=hp&q=php%2Bupload+file+&oq=php%2Bupload+file+&aq=f&aqi=&aql=&gs_l=hp.3...2031.10467.0.11261.0.0.0.0.0.0.0.0..0. 0...0.0.RSifcBUSttY&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=c089c400b8f8107&biw=1366&bih=646
http://www.google.com/#hl=fa&q=php%2Bajax+upload+file+&oq=php%2Bajax+upload+file+&aq=f&aqi=&aql=&gs_l=serp.3...17839.18898.0.19174.0.0.0.0.0.0.0.0. .0.0...0.0.EWuBgZTZbHY&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=c089c400b8f8107&biw=1366&bih=646

boysilent
پنج شنبه 01 تیر 1391, 14:14 عصر
دوست عزیز من اپلودکردن رو که بلدم نمیدونم چکااااااااااااااااااااااا ااار کنم که مثلا یه تاریخ و زمان به ابتدای نام فایل وصل بشه که از حالت تکراری بودن دراد
/

djsaeedkhan
پنج شنبه 01 تیر 1391, 14:42 عصر
if ($_FILES["file"]["size"] < 22000)
{//if_2
include_once("model/GetSetData.php");
$GetSetData=new GetSetData();
if(copy($_FILES["file"]["tmp_name"],"temp/".$_FILES["file"]["name"]))
{//if_3
$type=$_FILES["file"]["type"];
$file_name=$_FILES["file"]["name"];
$file_saved_name=str_replace("/",'',$GetSetData->TimeDateIp('date_fa','','')).str_replace(":",'',$GetSetData->TimeDateIp('','time','')).rand(0000000000,99999999 99);$other="{$_POST['onvan_file']}^{$_FILES['file']['size'] }^{$type}^{$GetSetData->TimeDateIp('date_fa','','')}^{$GetSetData->TimeDateIp('','time','')}";
$insert1=$GetSetData->inserting("");
if(isset($insert1) and $insert1!=false and $insert1=="Yes")//if_4
{
$files_to_zip = array("temp/".$file_name);
$result2 = $GetSetData->create_zip($files_to_zip,"attachment/".$file_saved_name.".zip");
if($result2)//اگر تونست تبدیل به زیپ کند//if_5
{
$this->registry->template->message="ثبت انجام شد";
unlink("temp/".$_FILES["file"]["name"]); //delete File From Temp
}//if_5
}//if_4
else//else_1
{
$this->registry->template->Error_Msg= $insert1;
unlink("temp/".$_FILES["file"]["name"]); //delete File From Temp
}//else_1
}//if_3
}//if_2
else

boysilent
پنج شنبه 01 تیر 1391, 14:46 عصر
ممنون
از تابع rand استفاده کردم و اسم فایل در پایگاه داده +عدد تولید شده دخیره میشه ولی اسم فایل تغییر نمیکنه؟
این قسمت رو بنظزتون کجاش باید تغییر کنه؟


$move=move_uploaded_file($fpic,$filePathfpic);

djsaeedkhan
پنج شنبه 01 تیر 1391, 14:59 عصر
http://www.google.com/#hl=fa&site=&source=hp&q=php%2Brename+uploaded+file&oq=php%2Brename+uploaded+file&aq=f&aqi=&aql=&gs_l=hp.3...2571.7994.0.8287.0.0.0.0.0.0.0.0..0.0. ..0.0.9EYKjFE74r4&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=c089c400b8f8107&biw=1366&bih=646

ravand
پنج شنبه 01 تیر 1391, 15:06 عصر
این روش رو که استاد شهرکی پیشنهاد دادن استفاده کن.

move_uploaded_file($_FILES['photo']['tmp_name'], '/images/'.$user['id'].'.jpg');
این روش شماره ی فید id رو میگیره و میده به عکس. اینطوری دیگه عکس همنامی وجود نداره که باعث پاک شدنش بشه.

boysilent
پنج شنبه 01 تیر 1391, 16:16 عصر
خوب این روش خوبیه ولی اگه مثلا gif بود چی؟

boysilent
پنج شنبه 01 تیر 1391, 16:27 عصر
دوستان این قسمت رو اگه میشه به من کمک کنید طریقه اتصال متغیر به این مسیر



$dirfp="../wordha/pic/";

مثلا میخوام این متغیر بیادو بچسبه به بعدpic



wordha/pic/$id

میشه اینگارو کرد

djsaeedkhan
پنج شنبه 01 تیر 1391, 16:43 عصر
$pos = strrpos($filename, '.');
if($pos === false)
$ext = ""; // file has no extension; do something special?
$ext = substr($filename, $pos);


$newFilename = "foobar" . $ext;
move_uploaded_file($_FILES['picture']['tmp_name'], 'peopleimages/' . $newFilename);

boysilent
پنج شنبه 01 تیر 1391, 17:48 عصر
دوستان این قسمت رو اگه میشه به من کمک کنید طریقه اتصال متغیر به این مسیر



$dirfp="../wordha/pic/";

مثلا میخوام این متغیر بیادو بچسبه به بعدpic



wordha/pic/$id

میشه اینگارو کرد
ممنون میشم جواب بدبد دوستان

boysilent
پنج شنبه 01 تیر 1391, 18:08 عصر
دوستان ناراحت نشیدا ولی من از این کدها تو نت خیلی دیدم فقط کافیه لاتین جستجوو کنی ؟
دوستان اگه به فارسی مثثال میتونید بزنید یگسد در غیر اینصورت فقط وقت هزدومون هدر میره ممنون
مشکل من اینه که فقط میخوام به اول فایلم یه متغیر بچسبونم
اوکی

$dirfp="../wordha/pic/";

lady64
جمعه 02 تیر 1391, 08:56 صبح
pic اسم پوشه هست یا اسمی برای تصویر ؟ اگر اسم تصویر هست برای اتصال این کار رو میشه انجام داد :


pic."$id"

شما هدفتون چیه ؟ این که اسم تکراری وارد پوشه ی ذخیره تصاویر نشه ؟ این فایلی که ضمیمه کردم ، آپلود رو بصورت کامل و به شکلی که میخواید داره . به هر تصویر یک نام میده و برای اضافه شدن تصویر بعدی ابتدا چک میکنه که این نام موجود نباشه ، اگر تکراری بود یک نام جدید اختصاص میده.یک بانک dbimage هم باید بسازید.اگر مورد استفادتون قرار گرفت و جایی مبهم بود بپرسید.

ravand
جمعه 02 تیر 1391, 09:08 صبح
یعنی با تابع rand میاد نام های متفاوتی رو برای پوشه میذاره؟
فکر میکنم اگه متغییر تاریخ رو هم بهش اضافه کنیم بهتر باشه. اینطوری دیگه به صورت تصادفی هم هیچ عدد یکسانی نمیاد.

lady64
جمعه 02 تیر 1391, 09:26 صبح
یعنی با تابع rand میاد نام های متفاوتی رو برای پوشه میذاره؟
فکر میکنم اگه متغییر تاریخ رو هم بهش اضافه کنیم بهتر باشه. اینطوری دیگه به صورت تصادفی هم هیچ عدد یکسانی نمیاد.

درسته . با rand یک مقدار تصادفی میده ولی این قسمت کد چک میکنه که این مقدار تصادفی قبلا وارد نشده باشه ، که اگر موجود بود. اسم جدید میده.


while(is_file($newname))
{
$name=rand(100000,999999);
$newname=$add.$name.'.'.$type;
}

البته این یک مثال سادست . میشه متغیرهایی هم به این مقدار تصادفی اضافه کرد.همونطور که گفتید تاریخ .

MMSHFE
جمعه 02 تیر 1391, 10:56 صبح
خوب این روش خوبیه ولی اگه مثلا gif بود چی؟
این کد رو امتحان کنید:

move_uploaded_file($_FILES['photo']['tmp_name'], '/images/'.$user['id'].mb_substr($_FILES['photo']['name'], mb_strrpos($_FILES['photo']['name'], '.', NULL, 'utf-8'), NULL, 'utf-8'));
این روش، از پسوند خود فایل اصلی استفاده میکنه. دیگه پسوند هرچی باشه فرقی نمیکنه.
موفق باشید.