نحوه آپلود فایل (عکس)

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

از لینک مربوطه می توان در پروفایل کاربر، به عنوان آواتار استفاده و ذخیره کرد.

جهت آپلود عکس به این شیوه عمل می کنیم:

POST https://connect.evand.com/api/files
Header:
Authorization: Bearer xxx
Content-Type: multipart/form-data

برای body هم از آنجایی که json نیست، نیازه است که فایل مربوطه (عکس) را به عنوان file به سرور ارسال نمایید. یعنی اسم فیلدی که برای تعیین فایل استفاده می کنید file خواهد بود.

خروجی در صورت موفقیت آمیز بودن عملیات لینک مربوط به فایل آپلود شده خواهد بود:
{
  "url": "https://static.evand.net/connect/files/20190311/..."
}

در مواردی ممکن است با خطا روبرو شوید:

در صورتی که فایل مربوط رو به سرور ارسال نکرده باشید یا فایل (عکس) آپلودی، اسم فیلدش file نباشه که سرور نتونه فایل رو تشخص بده. در اینصورت همچین خطایی می گیرید:

{
  "errors": {
    "file": {
      "isEmpty": "Value is required and can't be empty"
    }
  },
  "title": "validation failed",
  "type": "validation_error",
  "status": 422,
  "detail": "hello"
}


در صورتی که فایل آپلودی عکس نباشد، همچین خطایی خواهید گرفت:

{
  "errors": {
    "file": {
      "fileIsImageFalseType": "File is no image, 'text/plain' detected"
    }
  },
  "title": "validation failed",
  "type": "validation_error",
  "status": 422,
  "detail": "hello"
}

حداکثر فایل قابل آپلود ۵ مگابایت می باشد. در صورتی که حجم فایل آپلود شده بیش از این باشد، با خطایی مثل زیر روبرو خواهید شد:

{
  "errors": {
    "file": {
      "fileSizeTooBig": "Maximum allowed size for file is '5MB' but '15MB' detected"
    }
  },
  "title": "validation failed",
  "type": "validation_error",
  "status": 422,
  "detail": "hello"
}

یه نکته ای که وجود داره اینه که ممکنه حجم فایل آپلودی خیلی زیاد باشه و درخواست به PHP نرسه. در اینصورت با همچین خطایی روبرو نخواهید شد و خطایی عجیب غریب از طرف nginx مشاهده خواهید کرد. در اینصورت می شه از status code برگشتی هم به علت موضوع پی برد. مثل:
413 Request Entity Too Large


نظرات

پست‌های معروف از این وبلاگ

لیست کاربران نشان شده - سرویس کانکت

استفاده از Refresh Token جهت دریافت توکن‌های معتبر جدید (کانکت)

پروفایل عمومی کاربران کانکت