شرح
از chrome.fileBrowserHandler API برای گسترش مرورگر فایل Chrome OS استفاده کنید. برای مثال، میتوانید از این API استفاده کنید تا کاربران بتوانند فایلها را در وبسایت شما بارگذاری کنند.
مفاهیم و کاربرد
مرورگر فایل ChromeOS زمانی ظاهر میشود که کاربر Alt+Shift+M را فشار دهد یا یک دستگاه ذخیرهسازی خارجی مانند کارت SD، کلید USB، درایو خارجی یا دوربین دیجیتال را متصل کند. مرورگر فایل علاوهبر نمایش فایلهای موجود در دستگاههای خارجی، میتواند فایلهایی را که کاربر قبلاً در سیستم ذخیره کرده است نیز نمایش دهد.
وقتی کاربر یک یا چند فایل را انتخاب میکند، مرورگر فایل دکمههایی را اضافه میکند که نشاندهنده گردانندههای معتبر برای آن فایلها است. برای مثال، در نماگرفت زیر، انتخاب فایلی با پسوند «.png» منجر به دکمه «ذخیره در گالری» میشود که کاربر میتواند روی آن کلیک کند.
اجازهها
fileBrowserHandlerباید اجازه "fileBrowserHandler" را در مانیفست افزونه اعلام کنید.
دردسترس بودن
باید از فیلد "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 اجرا میشود، فعال میشود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(id: string, details: FileHandlerExecuteEventDetails) => void
-
id
رشته
-