chrome.fileBrowserHandler

Descrição

Use a API chrome.fileBrowserHandler para ampliar o navegador de arquivos do ChromeOS. Por exemplo, você pode usar essa API para permitir que os usuários façam upload de arquivos para seu site.

Permissões

fileBrowserHandler

Disponibilidade

Somente ChromeOS Somente primeiro plano

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, uma chave USB, um drive externo ou uma câmera digital. Além de mostrar os arquivos em dispositivos externos, o navegador também pode mostrar os arquivos salvos pelo usuário no sistema.

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

Captura de tela do navegador de arquivos

Manifesto

É necessário declarar o arquivo "fileBrowserHandler" no manifesto de extensão, e é necessário usar "file_browser_handlers" campo para registrar a extensão como um manipulador de pelo menos um tipo de arquivo. Você também deve fornecer um ícone 16x16 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"
  },
  ...
}

Como implementar um gerenciador do navegador de arquivos

Para usar essa API, implemente uma função que gerencie 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 ter acesso ao 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 manipulador de eventos recebe dois argumentos:

id
O "ID" do arquivo de manifesto. Se a extensão implementar vários gerenciadores, você poderá verificar o valor do ID para ver qual gerenciador foi acionado.
detalhes
Um objeto que descreve o evento. É possível acessar 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[]

    Matriz de instâncias de entrada que representa os arquivos que são destinos dessa 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