توضیحات
از API مربوط به chrome.fileBrowserHandler برای گسترش مرورگر فایل سیستم عامل کروم استفاده کنید. برای مثال، میتوانید از این API برای فعال کردن امکان آپلود فایل توسط کاربران در وبسایت خود استفاده کنید.
مفاهیم و کاربردها
مرورگر فایل ChromeOS زمانی ظاهر میشود که کاربر کلیدهای Alt+Shift+M را فشار دهد یا یک دستگاه ذخیرهسازی خارجی مانند کارت SD، فلش USB، درایو خارجی یا دوربین دیجیتال را متصل کند. این مرورگر فایل علاوه بر نمایش فایلهای موجود در دستگاههای خارجی، میتواند فایلهایی را که کاربر قبلاً در سیستم ذخیره کرده است نیز نمایش دهد.
وقتی کاربر یک یا چند فایل را انتخاب میکند، مرورگر فایل دکمههایی را اضافه میکند که نشاندهندهی هندلرهای معتبر برای آن فایلها هستند. برای مثال، در تصویر زیر، انتخاب فایلی با پسوند ".png" منجر به دکمهی "ذخیره در گالری" میشود که کاربر میتواند روی آن کلیک کند.

مجوزها
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 اجرا شود.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(id: string, details: FileHandlerExecuteEventDetails) => void
- شناسه
رشته