• تهران -خیابان شریعتی - بالاتر از سه راه ملک - روبروی آتش نشانی - آرتارسانه
  • تلفن تماس: 02191303424

آموزش برنامه نویسی PHP-جلسه سیزدهم

PHP File Upload

برای آپلود یک فایل در سرور ابتدا باید configure سرور را چک کنید. تا ببینید اجازه آپلود فایل داده شده یا نه برای این کار داخل زمپ در بخش apache، روی configکلیک می‌کنید و گزینه php.ini را انتخاب می‌کنید. یک فایل notpad باز می‌شود که در آنجا باید گزینه File_upload را پیدا کنید و ببینید روی on هست یا نه اگر on نبود باید تغییرش بدیم به حالت on و ذخیره کنیم. یک form ایجاد می‌کنیم که action آن را روی یک فایل php آدرس می دهیم. متد را post قرار می دهیم و برای اینکه اجازه آپلود بده باید enctype=”multipart/form-data” قرار بدیم.

<!DOCTYPE html>
<html>
<body>

<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
  Select image to upload:
  <input type=”file” name=”fileToUpload” id=”fileToUpload”>
  <input type=”submit” value=”Upload Image” name=”submit”>
</form>

</body>
</html>

حالا باید صفحه upload.php رو ایجاد کنیم. یک فایل php ایجاد می‌کنیم. ابتدا باید مسیر ذخیره‌ سازی اطلاعات رو تعریف کنیم برای همین یک پوشه با نام اختیاری مثلا uploads میسازیم تا فایل‌های آپلودی بره داخلش. $target_dir = “uploads/”;

بعد باید اسم فایل رو بگیریم تا بتونیم متوجه بشیم که از قبل وجود داشته یا نه و به اشتباه فایل‌های قبلی حذف میشه. 

$target_file = $target_dir . basename($_FILES[“fileToUpload”][“name”]);

یک متغیر دیگر تعریف میکنیم برای اینکه اگر آپلود انجام شد 1 برگردونه اگه نشد 0 برگردونه. $uploadOk = 1;

برای گرفتن پسوند فایل یک متغیر تعریف می‌کنیم. مثلا چه پسوندی باشه. در واقع برای اینکه اطلاعات پسوند عکس رو جدا کنیم باید در یک متغیر مجزا، اسم فایل رو میگیریم بعد برای جدا کردن پسوند از PATHINFO_EXTENSION استفاده می کنیم چون این flag به حروف بزرگ برمیگردون نتیجه رو باید با استفاده از strtolower به حروف کوچک تبدیل بشه.

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

حالا شرط می‌گذاریم و بررسی می‌کنیم اگر دکمه کلیک شد چک کنه سایز رو تا اگر دارای سایز بود یه پیغام بده .

<?php
$target_dir = “uploads/”;
$target_file = $target_dir . basename($_FILES[“fileToUpload”][“name”]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST[“submit”])) {
  $check = getimagesize($_FILES[“fileToUpload”][“tmp_name”]);
  if($check !== false) {
    echo “File is an image – ” . $check[“mime”] . “.”;
    $uploadOk = 1;
  } else {
    echo “File is not an image.”;
    $uploadOk = 0;
  }
}

در مرحله بعد بودن یا نبودن قایل را بررسی می کنیم تا اگر فایل موجود بود دیگر آپلود نشود.

// Check if file already exists
if (file_exists($target_file)) {
  echo “Sorry, file already exists.”;
  $uploadOk = 0;
}

حالا سایز رو چک می‌کنیم :


// Check file size
if ($_FILES[“fileToUpload”][“size”] > 500000) {
  echo “Sorry, your file is too large.”;
  $uploadOk = 0;
}

در ادامه فرمت عکس رو چک می‌کنیم:

// Allow certain file formats
if($imageFileType != “jpg” && $imageFileType != “png” && $imageFileType != “jpeg”
&& $imageFileType != “gif” ) {
  echo “Sorry, only JPG, JPEG, PNG & GIF files are allowed.”;
  $uploadOk = 0;
}

در نهایت چک می‌کنیم همه شرایط اوکی بود یا نه:


// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo “Sorry, your file was not uploaded.”;
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES[“fileToUpload”][“tmp_name”], $target_file)) {
    echo “The file “. htmlspecialchars( basename( $_FILES[“fileToUpload”][“name”])). ” has been uploaded.”;
  } else {
    echo “Sorry, there was an error uploading your file.”;
  }
}
?>