فایل browser.BrowserHandler

توضیحات

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

مفاهیم و کاربردها

مرورگر فایل ChromeOS زمانی ظاهر می‌شود که کاربر کلیدهای Alt+Shift+M را فشار دهد یا یک دستگاه ذخیره‌سازی خارجی مانند کارت SD، فلش USB، درایو خارجی یا دوربین دیجیتال را متصل کند. این مرورگر فایل علاوه بر نمایش فایل‌های موجود در دستگاه‌های خارجی، می‌تواند فایل‌هایی را که کاربر قبلاً در سیستم ذخیره کرده است نیز نمایش دهد.

وقتی کاربر یک یا چند فایل را انتخاب می‌کند، مرورگر فایل دکمه‌هایی را اضافه می‌کند که نشان‌دهنده‌ی هندلرهای معتبر برای آن فایل‌ها هستند. برای مثال، در تصویر زیر، انتخاب فایلی با پسوند ".png" منجر به دکمه‌ی "ذخیره در گالری" می‌شود که کاربر می‌تواند روی آن کلیک کند.

یک مرورگر فایل ChromeOS.
یک مرورگر فایل ChromeOS.

مجوزها

fileBrowserHandler

شما باید مجوز "fileBrowserHandler" را در فایل manifest افزونه تعریف کنید.

در دسترس بودن

فقط سیستم عامل کروم فقط در پیش‌زمینه

شما باید از فیلد "file_browser_handlers" برای ثبت افزونه به عنوان هندلر حداقل یک نوع فایل استفاده کنید. همچنین باید یک آیکون 16 در 16 برای نمایش روی دکمه ارائه دهید. به عنوان مثال:

{
  "name": "My extension",
  ...
  "file_browser_handlers": [
    {
      "id": "upload",
      "default_title": "Save to Gallery", // What the button will display
      "file_filters": [
        "filesystem:*.jpg",  // To match all files, use "filesystem:*.*"
        "filesystem:*.jpeg",
        "filesystem:*.png"
      ]
    }
  ],
  "permissions" : [
    "fileBrowserHandler"
  ],
  "icons": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  },
  ...
}

پیاده‌سازی یک کنترل‌کننده مرورگر فایل

برای استفاده از این API، باید تابعی پیاده‌سازی کنید که رویداد onExecute از browser.fileBrowserHandler را مدیریت کند. تابع شما هر زمان که کاربر روی دکمه‌ای که نشان‌دهنده‌ی مدیریت‌کننده‌ی مرورگر فایل شماست کلیک کند، فراخوانی می‌شود. در تابع خود، از API سیستم فایل برای دسترسی به محتوای فایل استفاده کنید. در اینجا مثالی آورده شده است:

browser.fileBrowserHandler.onExecute.addListener(async (id, details) => {
  if (id !== 'upload') {
    return;  // check if you have multiple file_browser_handlers
  }

  for (const entry of detail.entries) {
    // the FileSystemFileEntry doesn't have a Promise API, wrap in one
    const file = await new Promise((resolve, reject) => {
      entry.file(resolve, reject);
    });
    const buffer = await file.arrayBuffer();
    // do something with buffer
  }
});

به کنترل‌کننده‌ی رویداد شما دو آرگومان ارسال می‌شود:

id
مقدار id از فایل مانیفست. اگر افزونه شما چندین هندلر (handler) را پیاده‌سازی می‌کند، می‌توانید مقدار شناسه را بررسی کنید تا ببینید کدام هندلر فعال شده است.
details
یک شیء که رویداد را توصیف می‌کند. می‌توانید فایل یا فایل‌هایی را که کاربر انتخاب کرده است از فیلد entries این شیء که آرایه‌ای از اشیاء FileSystemFileEntry است، دریافت کنید.

انواع

FileHandlerExecuteEventDetails

جزئیات رویداد مربوط به رویداد fileBrowserHandler.onExecute.

خواص

  • نوشته‌ها

    هر []

    آرایه‌ای از نمونه‌های ورودی که فایل‌هایی را نشان می‌دهد که هدف این اقدام هستند (در مرورگر فایل ChromeOS انتخاب شده‌اند).

  • شناسه برگه

    شماره اختیاری

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

رویدادها

onExecute

chrome.fileBrowserHandler.onExecute.addListener(
  callback: function,
)

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

پارامترها