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 garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.
Para acessar a funcionalidade FilePicker, é necessária a seguinte configuração específica da plataforma.
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.
Selecionar arquivo
FilePicker.PickAsync()
permite que o usuário escolha um arquivo do dispositivo. Você pode especificar diferentes 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.Png
e 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 específicos de arquivo de quadrinhos:
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ê deseja que seu usuário escolha vários arquivos, você pode chamar o FilePicker.PickMultipleAsync()
método. Ele também usa PickOptions
como parâmetro para especificar informações adicionais. Os resultados são os mesmos que PickAsync
, mas em vez de um único FileResult
é retornado um IEnumerable<FileResult>
que pode ser iterado.
Dica
A FullPath
propriedade nem sempre retorna o caminho físico para o arquivo. Use o método OpenReadAsync
para acessar o arquivo.