chrome.fileBrowserHandler

Descrição

Use a API chrome.fileBrowserHandler para estender o navegador de arquivos do Chrome OS. Por exemplo, é possível usar essa API para permitir que os usuários façam upload de arquivos para seu site.

Conceitos e uso

O navegador de arquivos do ChromeOS aparece quando o usuário pressiona Alt+Shift+M ou conecta um dispositivo de armazenamento externo, como um cartão SD, pen drive, drive externo ou câmera digital. Além de mostrar os arquivos em dispositivos externos, o navegador de arquivos também pode exibir arquivos que o usuário salvou anteriormente no sistema.

Quando o usuário seleciona um ou mais arquivos, o navegador de arquivos adiciona botões que representam os manipuladores válidos desses arquivos. Por exemplo, na captura de tela a seguir, a seleção de um arquivo com o sufixo ".png" resulta em um botão "Salvar na galeria" em que o usuário pode clicar.

Um navegador de arquivos do ChromeOS.
Um navegador de arquivos do ChromeOS.

Permissões

fileBrowserHandler

É necessário declarar a permissão "fileBrowserHandler" no manifesto da extensão.

Disponibilidade

Somente no ChromeOS Somente em primeiro plano

Use o campo "file_browser_handlers" para registrar a extensão como um gerenciador de pelo menos um tipo de arquivo. Você também precisa fornecer um ícone de 16 x 16 para exibição no botão. Exemplo:

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

Implementar um gerenciador do navegador de arquivos

Para usar essa API, é necessário implementar uma função que processe o evento onExecute de chrome.fileBrowserHandler. Sua função será chamada sempre que o usuário clicar no botão que representa o gerenciador do navegador de arquivos. Na função, use a API File System para acessar o conteúdo do arquivo. Exemplo:

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

Seu gerenciador de eventos recebe dois argumentos:

id
O valor id do arquivo de manifesto. Se a extensão implementar vários gerenciadores, você poderá verificar o valor do ID para saber qual gerenciador foi acionado.
details
Um objeto que descreve o evento. É possível acessar o arquivo ou os arquivos que o usuário selecionou no campo entries desse objeto, que é uma matriz de objetos FileSystemFileEntry.

Tipos

FileHandlerExecuteEventDetails

Payload de detalhes do evento para o evento fileBrowserHandler.onExecute.

Propriedades

  • entries

    any[]

    Matriz de instâncias de entrada que representam arquivos que são alvos desta ação (selecionados no navegador de arquivos do ChromeOS).

  • tab_id

    número opcional

    O ID da guia que gerou esse evento. Os IDs de guia são exclusivos em uma sessão do navegador.

Eventos

onExecute

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

É acionado quando a ação do sistema de arquivos é executada no navegador de arquivos do ChromeOS.

Parâmetros