Xamarin.Essentials: Seletor de Arquivos

A classe FilePicker permite que um usuário escolha um ou vários arquivos do dispositivo.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials para garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Para acessar a funcionalidade FilePicker , a configuração específica da plataforma a seguir é necessária.

Não exige mais configurações.

Dica

Todos os métodos devem ser chamados no thread da interface do usuário porque as verificações de permissão e as solicitações são tratadas automaticamente pelo Xamarin.Essentials.

Escolher Arquivo

FilePicker.PickAsync() O método permite que o usuário escolha um arquivo do dispositivo. Você pode especificar diferente PickOptions ao chamar o método, permitindo que você especifique o título a ser exibido e os tipos de arquivo que o usuário tem permissão para escolher. Por padrão

async Task<FileResult> PickAndShow(PickOptions options)
{
    try
    {
        var result = await FilePicker.PickAsync(options);
        if (result != null)
        {
            Text = $"File Name: {result.FileName}";
            if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                var stream = await result.OpenReadAsync();
                Image = ImageSource.FromStream(() => stream);
            }
        }
        
        return result;
    }
    catch (Exception ex)
    {
        // The user canceled or something went wrong
    }
    
    return null;
}

Os tipos de arquivo padrão são fornecidos com FilePickerFileType.Images, FilePickerFileType.Pnge FilePickerFilerType.Videos. Você pode especificar tipos de arquivos personalizados ao criar o PickOptions e eles podem ser personalizados por plataforma. Por exemplo, aqui está como você especificaria tipos de arquivos de quadrinhos específicos:

var customFileType =
    new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>>
    {
        { DevicePlatform.iOS, new[] { "public.my.comic.extension" } }, // or general UTType values
        { DevicePlatform.Android, new[] { "application/comics" } },
        { DevicePlatform.UWP, new[] { ".cbr", ".cbz" } },
        { DevicePlatform.Tizen, new[] { "*/*" } },
        { DevicePlatform.macOS, new[] { "cbr", "cbz" } }, // or general UTType values
    });
var options = new PickOptions
{
    PickerTitle = "Please select a comic file",
    FileTypes = customFileType,
};

Escolher vários arquivos

Se você quiser que o usuário escolha vários arquivos, poderá chamar o FilePicker.PickMultipleAsync() método . Ele também usa PickOptions como um parâmetro para especificar informações adicionais. Os resultados são os mesmos PickAsyncque , mas, em vez de um único FileResult , é IEnumerable<FileResult> retornado um que pode ser iterado.

Dica

A FullPath propriedade nem sempre retorna o caminho físico para o arquivo. Para obter o arquivo, use o OpenReadAsync método .

Diferenças entre plataformas

  • Sem diferenças entre plataformas.

API