Xử lý tệp trên Chrome OS

Tính năng xử lý tệp cho phép bạn định cấu hình ChromeOS để tiện ích có thể mở tệp bằng trình đơn Mở của trình đơn tệp hoặc trình đơn Mở bằng trình đơn theo bối cảnh. Sau khi mở, bạn xử lý dữ liệu của tệp bằng Launch Handler API của nền tảng web. Sau đó, bạn sẽ sử dụng các API nền tảng web tiêu chuẩn để hiển thị hoặc xử lý tệp.

Đã thêm trình xử lý tệp vào trình đơn Mở của ChromeOS.
Một trình xử lý tệp được thêm vào trình đơn Mở của ChromeOS.

Khả năng sử dụng trong tiện ích

ChromeOS 120 trở lên.

Quyền

Không yêu cầu quyền để xử lý tệp.

Tệp kê khai

Bạn cần thêm mảng "file_handlers" vào tệp manifest.json.

Ngữ cảnh hỗ trợ

Bạn có thể dùng API này trong trình chạy dịch vụ tiện ích, cửa sổ bật lên, bảng điều khiển bên hoặc tập lệnh nội dung.

Định cấu hình trình xử lý tệp

Mỗi thành viên của "file_handlers" — nghĩa là mỗi trình xử lý tệp — chỉ định một hoặc nhiều kiểu tệp cần được một trang tiện ích cụ thể xử lý.

Trình xử lý mà bạn chỉ định sẽ được thêm vào cửa sổ Files trên ChromeOS, trình đơn Mở và Mở bằng riêng. Các tệp này sẽ chỉ xuất hiện trong những trình đơn này khi người dùng chọn một tệp có đuôi cụ thể. Ví dụ: nếu một trình xử lý tệp chỉ định .txt, thì các trình đơn ChromeOS chỉ hiển thị trình xử lý đó khi một tệp có đuôi đó được chọn.

Xử lý tệp

Trình xử lý tệp là một tệp HTML có trong tiện ích của bạn. Khi người dùng chọn trình xử lý của bạn trong một trình đơn, tệp HTML sẽ mở trong một thẻ mới. Việc xử lý tệp, cho dù bạn hiển thị tệp hay sử dụng tệp theo một cách khác, đều được thực hiện bằng JavaScript sử dụng các API nền tảng web thích hợp. Mã xử lý phải nằm trong một tệp JavaScript riêng và được đưa vào qua thẻ <script>, đồng thời cũng phải nằm trong tiện ích của bạn. Tệp tập lệnh sử dụng giao diện LaunchQueue của Launch Handler API để tải đối tượng FileSystemFileHandle.

Ví dụ:

Ví dụ sau minh hoạ cách lấy đối tượng FileSystemFileHandle bằng cách sử dụng giao diện LaunchQueue. Để xem cách xử lý tệp trong thực tế, hãy cài đặt Bản minh hoạ cách xử lý tệp.

if ('launchQueue' in window) {
  launchQueue.setConsumer(async launchParams => {
    if (!launchParams.files || !launchParams.files.length) { return; }
    const fileHandle = launchParams.files[0];
  });
}
``````