به محتوای اصلی

فایل‌ها

عکس و فایل را داخل رکورد نگذارید. فایل جای خودش می‌رود، شناسه‌اش را می‌گیرید، و رکورد فقط همان شناسه را نگه می‌دارد.

آپلود

یک درخواست multipart با فیلدی به نام file:

curl -X POST https://api.fikaro.ir/{اسلاگ}/v1/files \
  -H "Authorization: Bearer apck_..." \
  -F "file=@photo.jpg" \
  -F "public=true"

جواب:

{
  "id": "01J...",
  "filename": "photo.jpg",
  "contentType": "image/jpeg",
  "size": 184320,
  "checksum": "…",
  "isPublic": true,
  "url": "https://api.fikaro.ir/{اسلاگ}/files/01J..."
}

id را در رکوردتان ذخیره کنید و url را در تگ img.

عمومی در برابر خصوصی

این تنها تصمیمی است که موقع آپلود می‌گیرید و بعداً معنایش را عوض می‌کند:

| | آدرس | چه کسی می‌بیند | |---|---|---| | عمومی (public=true) | /{اسلاگ}/files/{id} | هر کسی با لینک — بدون احراز هویت | | خصوصی (پیش‌فرض) | /{اسلاگ}/v1/files/{id} | فقط با کلید API یا توکن کاربر |

آدرس عمومی عمداً کوتاه است و v1 ندارد: از روی خودِ آدرس معلوم است که عمومی است. عکس محصول عمومی است؛ فاکتور و مدرک، نه.

برای عوض کردنش بعد از آپلود، PATCH /v1/files/{id}.

تصویر کوچک

پارامتر ?w= نسخه‌ی مقیاس‌شده می‌دهد — نیازی به سرویس دوم نیست:

<img src="https://api.fikaro.ir/my-shop/files/01J...?w=320" />

بقیه‌ی عملیات

GET    /{اسلاگ}/v1/files          فهرست فایل‌ها
GET    /{اسلاگ}/v1/files/{id}     دانلود (خصوصی هم)
PATCH  /{اسلاگ}/v1/files/{id}     تغییر عمومی/خصوصی یا اتصال به رکورد
DELETE /{اسلاگ}/v1/files/{id}     حذف

هر فایل می‌تواند به یک رکورد وصل شود (entity و recordId)، که فهرست‌کردن فایل‌های یک سفارش یا یک محصول را ساده می‌کند.

سقف حجم

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

سه خطایی که وقت می‌گیرد

فیلد را file نگذاشته‌اید. نام فیلد multipart باید دقیقاً file باشد؛ هر نام دیگری خطای «فایلی ارسال نشده است» می‌گیرد.

فایل خصوصی را در img گذاشته‌اید. آدرس v1 احراز هویت می‌خواهد و مرورگر هدر Authorization را روی تگ img نمی‌فرستد. اگر باید در صفحه دیده شود، عمومی‌اش کنید.

عکس را base64 کرده‌اید. حجم یک‌سوم بیشتر می‌شود، دیتابیس سنگین می‌شود، و کش مرورگر بی‌استفاده می‌ماند چون عکس هر بار همراه JSON دوباره می‌آید.

بیشتر بخوانید