مطالعه این مقاله ارزشمند 1 دقیقه و 49 ثانیه زمان نیاز دارد مطالعه کنید، مشارکت کنید و به اشتراک بگذارید


عنوان مقاله: کلاس آپلود عکس بسیار ساده حرفه ای برای مبتدیان

آپلود فایل حالا ممکنه از هر نوعی باشه مثلا عکس یا صوت و یا تکست معمولی یکی از پرکاربردترین ابزارهایی هستش که امروزه در وب اپلیکیشنها استفاده میشه. برای امروز یک کلاسی رو آماده کردم که مبتدیان میتونن به صورتی خیلی ساده ازش بهره ببرند و نیازی به هندل کردن خیلی چیزها رو نداشته باشن. این کلاس خطاها - فرمت فایل - حجم رو هم پوشش میده

class fileManager {
  //default settings
  private $destination = '/images/';
  private $fileName = 'file.txt';
  private $maxSize = '1048576'; // bytes (1048576 bytes = 1 meg)
  private $allowedExtensions = array('image/jpeg','image/png','image/gif'); // mime types
  private $printError = TRUE;
  public $error = '';
 
  //START: Functions to Change Default Settings
  public function setDestination($newDestination) {
    $this->destination = $newDestination;
  }
  public function setFileName($newFileName) {
    $this->fileName = $newFileName;
  }
  public function setPrintError($newValue) {
    $this->printError = $newValue;
  }
  public function setMaxSize($newSize) {
    $this->maxSize = $newSize;
  }
  public function setAllowedExtensions($newExtensions) {
    if (is_array($newExtensions)) {
      $this->allowedExtensions = $newExtensions;
    }
    else {
      $this->allowedExtensions = array($newExtensions);
    }
  }
  //END: Functions to Change Default Settings
 
  //START: Process File Functions
  public function upload($file) {
 
    $this->validate($file);
 
    if ($this->error) {
      if ($this->printError) print $this->error;
    }
    else {
      move_uploaded_file($file['tmp_name'][0], $this->destination.$this->fileName) or $this->error .= 'Destination Directory Permission Problem.
';
      if ($this->error && $this->printError) print $this->error;
    }
  }
  public function delete($file) {
 
    if (file_exists($file)) {
      unlink($file) or $this->error .= 'Destination Directory Permission Problem.
';
    }
    else {
      $this->error .= 'File not found! Could not delete: '.$file.'
';
    }
 
    if ($this->error && $this->printError) print $this->error;
  }
  //END: Process File Functions
 
  //START: Helper Functions
  public function validate($file) {
 
    $error = '';
 
    //check file exist
    if (empty($file['name'][0])) $error .= 'No file found.
';
    //check allowed extensions
    if (!in_array($this->getExtension($file),$this->allowedExtensions)) $error .= 'Extension is not allowed.
';
    //check file size
    if ($file['size'][0] > $this->maxSize) $error .= 'Max File Size Exceeded. Limit: '.$this->maxSize.' bytes.
';
 
    $this->error = $error;
  }
  public function getExtension($file) {
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $ext = finfo_file($finfo, $file['tmp_name']);
    finfo_close($finfo);
    return $ext;
  }
  //END: Helper Functions
}

استفاده از کلاس هم بسیار ساده هستش. این مثال رو ببینید:


include('filemanager.php');
 
$imgUploader = new fileManager;
$imgUploader->setPrintError(FALSE);
 
//store errors
$errors = '';
 
$imgUploader->setDestination($_SERVER['DOCUMENT_ROOT'] . '/images/profiles/');
$imgUploader->setAllowedExtensions('image/jpg');
$imgUploader->setFileName('user_profile.jpg');
$imgUploader->upload($_FILES['profileimage']);
$errors .= $imgUploader->error;
 
$imgUploader->setDestination($_SERVER['DOCUMENT_ROOT'] . '/images/thumbs/');
$imgUploader->setAllowedExtensions(array('image/jpg','image/gif','image/png'));
$imgUploader->setFileName($_FILES['thumbnailimage']['tmp_name'][0]);
$imgUploader->upload($_FILES['thumbnailimage']);
$errors .= $imgUploader->error;
if ($errors) print $errors;

تنها کاری که لازم هستش که شما اینجا انجام بدید include کردن کلاس و تنظیم اون برای فایلهایی هستش که میخایید رو سرور آپلود کنید

بیوگرافی
مهندس مهدی پیشگوی

مهدی پیشگوی هستم متخصص تولید اپلکیشنهای موبایلی اندروید و سامانه های تحت وب. مسلط به اکثرا ابزارهای تولید وب از قبیل Php - NodeJs - React - VueJs و تولید اپلیکشنهای اندرویدی با Java و ReactNative. تو این سایت تمام تجربه ۱۵ سال من در اختیار شما قرار داده شده است

شما اولین فردی باشید که نظر ارزشمندی ارسال میکند

برای نظرات شما احترام قائل هستیم و بر حسب مشارکت مفید و سازنده شما کدهای تخفیف منحصر به فردی جهت خرید محصولات سایت ارسال خواهد شد



لطفا برای ارسال نظر وارد سایت شوید یا ثبت نام کنید. کلیک کنید

خواندن مطالب با ارزش زیر برای شما توصیه می شود

  • خطای composer و عدم ساپورت نسخه php
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 8 ثانیه
    مقالات آموزشی laravel - تیر 17، 1397

    چند روز پیش مشکلی که برام پیش اومد این بود که وقتی داشتم سایتم رو بالا می اوردم دیگه پوشه vendor که مربوط به لاراول بود رو آپلود نکردم. بعدش وقتی با دستور composer سعی کردم نصب و آپدیت کنم خطا داد. ...

  • مایگریشن ها رو تو لاراول به دلخواه به عقب برگردونیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 3 ثانیه
    مقالات آموزشی laravel - تیر 20، 1397

    زمانی که ما داریم از مایگریشن ها استفاده میکنیم بارها پیش اومده که آخرین جدولی که ساختیم نیاز به ویرایش داشته و با انجام rollback یا refresh کردن تمام جداول بانک اطلاعاتی رو به قبل برمیگردونیم ولی ...

  • در php کودوم خط از کدی که نوشتیم باعث بروز خطا میشه
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 14 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    زمانی که در حال توسه نرم افزار هستیم بارها پیش اومده که خطاهایی دریافت میکنیم که به نظر آشکار میان ولی وقتی میخایید بفهمید که کودوم خط این اتفاق افتاده و اون رو دیباگ کنید به مشکل میخورید مخصوصا زم ...

  • پورت استفاده شده توسط لاراول رو kill کنیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 4 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    یکی از مهمترین مشکلاتی که من برای توسعه سیستم دیجیتال مارکتینک اینستاگرام داشتم این بود که رکوئستی که میفرستادم سمت اینستاگرام برای لایک زدن و فالو کردن و یا ارسال کامنت خیلی طولانی میشه و دیگه لوک ...

  • خطای composer و عدم ساپورت نسخه php
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 8 ثانیه
    مقالات آموزشی laravel - تیر 17، 1397

    چند روز پیش مشکلی که برام پیش اومد این بود که وقتی داشتم سایتم رو بالا می اوردم دیگه پوشه vendor که مربوط به لاراول بود رو آپلود نکردم. بعدش وقتی با دستور composer سعی کردم نصب و آپدیت کنم خطا داد. ...

  • پورت استفاده شده توسط لاراول رو kill کنیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 4 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    یکی از مهمترین مشکلاتی که من برای توسعه سیستم دیجیتال مارکتینک اینستاگرام داشتم این بود که رکوئستی که میفرستادم سمت اینستاگرام برای لایک زدن و فالو کردن و یا ارسال کامنت خیلی طولانی میشه و دیگه لوک ...