chrome.fileBrowserHandler

Deskripsi

Gunakan chrome.fileBrowserHandler API untuk memperluas browser file ChromeOS. Misalnya, Anda dapat menggunakan API ini untuk memungkinkan pengguna mengupload file ke situs Anda.

Izin

fileBrowserHandler

Ketersediaan

Khusus ChromeOS Hanya latar depan

Browser file ChromeOS muncul saat pengguna menekan Alt+Shift+M atau menghubungkan perangkat penyimpanan eksternal, seperti kartu SD, kunci USB, drive eksternal, atau kamera digital. Selain menampilkan file di perangkat eksternal, {i>file browser<i} juga dapat menampilkan file yang sebelumnya telah disimpan pengguna ke sistem.

Saat pengguna memilih satu atau beberapa file, browser file akan menambahkan tombol yang mewakili pengendali yang valid untuk file tersebut. Misalnya, di screenshot berikut, memilih file dengan ".png" hasil akhiran dalam "Simpan ke Galeri" yang dapat diklik pengguna.

Screenshot file browser

Manifes

Anda harus mendeklarasikan "fileBrowserHandler" dalam manifes ekstensi, dan Anda harus menggunakan "file_browser_handlers" untuk mendaftarkan ekstensi sebagai pengendali setidaknya satu jenis file. Anda juga harus menyediakan ikon 16x16 untuk ditampilkan di tombol. Contoh:

{
  "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"
  },
  ...
}

Mengimplementasikan pengendali browser file

Untuk menggunakan API ini, Anda harus mengimplementasikan fungsi yang menangani peristiwa onExecute dari chrome.fileBrowserHandler. Fungsi Anda akan dipanggil setiap kali pengguna mengklik tombol yang mewakili pengendali browser file Anda. Di fungsi Anda, gunakan File System API untuk mendapatkan akses ke konten file. Berikut ini contohnya:

chrome.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
  }
});

Pengendali peristiwa Anda diberi dua argumen:

id
"ID" dari file manifes. Jika ekstensi Anda menerapkan beberapa pengendali, Anda dapat memeriksa nilai ID untuk melihat pengendali mana yang telah dipicu.
detail
Objek yang mendeskripsikan peristiwa. Anda bisa mendapatkan file atau file yang telah dipilih pengguna dari kolom entries objek ini, yang merupakan array objek FileSystemFileEntry.

Jenis

FileHandlerExecuteEventDetails

Payload detail peristiwa untuk peristiwa fileBrowserHandler.onExecute.

Properti

  • entries

    setiap[]

    Array instance Entri yang mewakili file yang merupakan target tindakan ini (dipilih di browser file ChromeOS).

  • tab_id

    angka opsional

    ID tab yang menampilkan peristiwa ini. ID tab bersifat unik di dalam sesi browser.

Acara

onExecute

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

Diaktifkan saat tindakan sistem file dijalankan dari browser file ChromeOS.

Parameter