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 é exibido quando o usuário pressiona Alt+Shift+M ou conecta um dispositivo de armazenamento externo, como um cartão SD, uma chave USB, um drive externo ou uma 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 gerenciadores válidos desses arquivos. Por exemplo, na captura de tela a seguir, selecionar um arquivo com um 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

Você precisa declarar a permissão "fileBrowserHandler" no manifesto de extensões.

Disponibilidade

Somente 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 deve fornecer um ícone de 16 por 16 para ser exibido 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, implemente uma função que gerencie o evento onExecute de chrome.fileBrowserHandler. A 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 ter acesso ao conteúdo do arquivo. Confira um 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
  }
});

Dois argumentos são passados ao manipulador de eventos:

id
O valor id do arquivo de manifesto. Se a extensão implementar vários gerenciadores, verifique o valor do ID para saber qual foi acionado.
details
Um objeto que descreve o evento. Acesse 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

    qualquer um[]

    Matriz de instâncias de entrada que representa os arquivos que são alvo desta ação (selecionada 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,
)

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

Parâmetros