مختصری اندر باب آپلود فایل با پ چ پ

hasanak852

Active Member
سلام
توی انجمن آموزش کاملی برای آپلود فایل با پی اچ پی نیافتم (کلاس آماده هست ولی آموزشش نیست).
تا جایی که خودم یاد دارم رو میگم اگه کم و کسری داشت اساتید دیگه کاملش کنن.
اول از همه همچین فرمی لازمه تا با کاربر رابطه داشته باشه:
HTML:
<form action="up.php" method="post" enctype="multipart/form-data">
<input type="file" name="file"" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
میبینید که لازمه تو فرم یه خاصیت enctype با مقدار multipart/form-data بذارید که نمیدونم به چه درد میخوره،
بعد تو فایل up.php با این متغیرها میتونید مشخصات فایل آپلود شده رو بگیرید:

اسم فایلی که آپلود شده:
PHP:
$_FILES["file"]["name"];
نوع فایل آپلود شده که مقادیری همچون image/jpeg، image/bmp و... خواهد داشت:
PHP:
$_FILES["file"]["type"];
حجم فایل آپلود شده به بایت:
PHP:
$_FILES["file"]["size"]
مکانی که فایل آپلود شده:
PHP:
$_FILES["file"]["tmp_name"];
خب حالا میتونید با تابع زیر فایل آپلود شده رو به مکان دلخواه روی هاست منتقل کنید:
PHP:
move_uploaded_file($_FILES["file"]["tmp_name"], './file/uploaded/'.$_FILES["file"]["name"]);
خودتون میتونید محدودیتهای مورد نظرتون رو ایجاد کنین، مثلا حجمش از یه مقداری کمتر و بیشتر نباشه یا نوع مشخصی از فایل دلخواه رو فقط قبول کنین و...
 

ahmad_m1234

Active Member
با اجازه من هم یک نکته اضافه کنم
آپلود فایل یکی از نقاط امنیتی که باید رعایت شود نوع فایل آن می باشد چون تشخیص نوع فایل توسط $_FILES["file"]["type"] فقط براساس پسوند نوع فایل به شما می گوید و اگر پسوند فایل را عوض کردین تشخیص نمی دهد
برای جلوگیری این مشکل با mime type فایل را بدست آورید و بطور مثال برای عکس می توانید از تابع getimagesize استفاده کنید که mime فایل به اصلی تشخیص می دهد
مثال :
PHP:
checkExt($_FILES['fileToUpload']['tmp_name']);
	function checkExt($type)
	{	
		$type = getimagesize($type);	
		if (($type['mime'] != 'image/jpeg') && ($type['mime'] != 'image/jpg') && ($type['mime'] != 'image/gif') && ($type['mime'] != 'image/png'))
			return false;
		else
			return true;
	}
 

aydin55

New Member
سلام و خسته نباشيد
من يه مشكلي در tmp_name اين قسمت دارم .چطوري اين آدرس دهي رو انجام بدم.منظورم اينه كه چطوري بگم كه فايل ها در قسمت مثلا فولدر ايميج ذخيره بشه .
با تشكر
 

hasanak852

Active Member
سلام و خسته نباشيد
من يه مشكلي در tmp_name اين قسمت دارم .چطوري اين آدرس دهي رو انجام بدم.منظورم اينه كه چطوري بگم كه فايل ها در قسمت مثلا فولدر ايميج ذخيره بشه .
با تشكر
ببین فابل رو که آپلود میکنن اول میره تو یه پوشه از هاست با اسم tmp_name ذخیره میشه
بعد با تابع
move_uploaded_file میتونی اونو به یه پوشه دلخواه سایت منتقل کنی با اسم دلخواه:
PHP:
move_uploaded_file($_FILES["file"]["tmp_name"], './image/esme-delkhah.pasvand');

 

ali mosavi

New Member
مشکل در آپلود کردن

سلام
با تشکر از اموزشتون
من مشکلی تو اپلود کردن دارم
یه اسکریپت ساده نوشتم که روی سرور خودم که تست میکنم کار میکنه و فایل رو اپلود میکنه و به محلی که ادرس دادم منتقل میکنه
اما روی سرورم که اپلود میکنم کار نمیکنه
پیغام میده که اپلود انجام شد اما در محل ادرس نمیاره
توی تنظیمات php دیدم که فولدر temp ادرس دهی نشده
میخواستم بپرسم که احتمال داره دلیلش همین باشه
و اگر هیمنه چجوری میشه تنظیمش کرد
ممنون
 

جدیدترین ارسال ها

بالا