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.
Permissões
fileBrowserHandler
Você precisa declarar a permissão "fileBrowserHandler"
no manifesto de extensões.
Disponibilidade
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 objetosFileSystemFileEntry
.
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
-
callback
função
O parâmetro
callback
tem esta aparência:(id: string, details: FileHandlerExecuteEventDetails) => void
-
id
string
-
detalhes
-