browser.fileBrowserHandler

شرح

از chrome.fileBrowserHandler API برای گسترش مرورگر فایل Chrome OS استفاده کنید. برای مثال، می‌توانید از این API استفاده کنید تا کاربران بتوانند فایل‌ها را در وب‌سایت شما بارگذاری کنند.

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

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

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

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

اجازه‌ها

fileBrowserHandler

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

دردسترس بودن

فقط ChromeOS فقط پیش‌زمینه

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

{
  "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 را مدیریت کند. هرگاه کاربر روی دکمه‌ای که نشان‌دهنده گرداننده مرورگر فایل شما است کلیک کند، تابع شما فراخوانده می‌شود. در تابع خود، از File System 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 از فایل مانیفست. اگر افزونه شما چندین گرداننده را پیاده‌سازی می‌کند، می‌توانید مقدار شناسه را بررسی کنید تا ببینید کدام گرداننده راه‌اندازی شده است.
details
شیئی که رویداد را توصیف می‌کند. می‌توانید فایل یا فایل‌هایی را که کاربر از فیلد entries این شیء انتخاب کرده است دریافت کنید، که آرایه‌ای از اشیاء FileSystemFileEntry است.

انواع

FileHandlerExecuteEventDetails

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

مشخصات

  • ورودی‌ها

    any[]

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

  • tab_id

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

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

رویدادها

onExecute

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

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

پارامترها