chrome.fileBrowserHandler

Mô tả

Dùng API chrome.fileBrowserHandler để mở rộng trình duyệt tệp trên Chrome OS. Ví dụ: bạn có thể sử dụng API này để cho phép người dùng tải tệp lên trang web của bạn.

Quyền

fileBrowserHandler

Phạm vi cung cấp

Chỉ ChromeOS Chỉ ở nền trước

Trình duyệt tệp trên ChromeOS xuất hiện khi người dùng nhấn tổ hợp phím Alt+Shift+M hoặc kết nối một thiết bị lưu trữ bên ngoài, chẳng hạn như thẻ SD, khoá USB, ổ đĩa ngoài hoặc máy ảnh kỹ thuật số. Ngoài việc hiển thị tệp trên thiết bị bên ngoài, trình duyệt tệp cũng có thể hiển thị các tệp mà trước đó người dùng đã lưu vào hệ thống.

Khi người dùng chọn một hoặc nhiều tệp, trình duyệt tệp sẽ thêm các nút đại diện cho các trình xử lý hợp lệ cho những tệp đó. Ví dụ: trong ảnh chụp màn hình sau đây, chọn một tệp có đuôi ".png" kết quả là "Lưu vào Thư viện" mà người dùng có thể nhấp vào.

Ảnh chụp màn hình trình duyệt tệp

Tệp kê khai

Bạn phải khai báo "fileBrowserHandler" trong tệp kê khai tiện ích và bạn phải sử dụng "file_browser_handlers" để đăng ký tiện ích mở rộng dưới dạng trình xử lý của ít nhất một loại tệp. Bạn cũng nên cung cấp biểu tượng có kích thước 16x16 để nút này hiển thị. Ví dụ:

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

Triển khai trình xử lý trình duyệt tệp

Để sử dụng API này, bạn phải triển khai một hàm xử lý sự kiện onExecute của chrome.fileBrowserHandler. Hàm của bạn sẽ được gọi bất cứ khi nào người dùng nhấp vào nút đại diện cho trình xử lý trình duyệt tệp. Trong hàm của bạn, hãy dùng File System API để có quyền truy cập vào nội dung tệp. Dưới đây là ví dụ:

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

Trình xử lý sự kiện của bạn được truyền hai đối số:

id
"Mã nhận dạng" khỏi tệp kê khai. Nếu tiện ích của bạn triển khai nhiều trình xử lý, thì bạn có thể kiểm tra giá trị mã nhận dạng để xem trình xử lý nào đã được kích hoạt.
chi tiết
Đối tượng mô tả sự kiện. Bạn có thể lấy (các) tệp mà người dùng đã chọn trong trường entries của đối tượng này (là một mảng gồm các đối tượng FileSystemFileEntry).

Loại

FileHandlerExecuteEventDetails

Tải trọng chi tiết sự kiện cho sự kiện fileBrowserHandler.onExecute.

Thuộc tính

  • bài viết

    bất kỳ[]

    Mảng các thực thể Entry biểu thị các tệp là mục tiêu của hành động này (được chọn trong trình duyệt tệp trên ChromeOS).

  • tab_id

    số không bắt buộc

    Mã của thẻ đã tạo ra sự kiện này. Mã thẻ là duy nhất trong một phiên trình duyệt.

Sự kiện

onExecute

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

Được kích hoạt khi thực thi hành động của hệ thống tệp từ trình duyệt tệp trên ChromeOS.

Tham số