Xamarin.Essentials: Selector de archivos

La clase FilePicker permite a un usuario seleccionar uno o varios archivos del dispositivo.

Introducción

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.

Para acceder a la función de FilePicker, se requiere la siguiente configuración específica para la plataforma.

No se requiere configuración adicional.

Sugerencia

Se debe llamar a todos los métodos del subproceso de interfaz de usuario porque Xamarin.Essentialscontrola automáticamente las solicitudes y comprobaciones de permisos.

Selección de un archivo

El método FilePicker.PickAsync() permite al usuario seleccionar un archivo desde el dispositivo. Se pueden seleccionar diferentes elementos PickOptions al llamar al método, lo que permite especificar el título que se va a mostrar y los tipos de archivo que el usuario puede elegir. De forma predeterminada

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;
}

Los tipos de archivo predeterminados se proporcionan con FilePickerFileType.Images, FilePickerFileType.Png y FilePickerFilerType.Videos. Puede especificar tipos de archivos personalizados al crear PickOptions y se pueden personalizar por plataforma. Por ejemplo, aquí se muestra cómo especificaría determinados tipos de archivo de cómic:

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,
};

Selección de varios archivos

Si desea que el usuario elija varios archivos, puede llamar al método FilePicker.PickMultipleAsync(). También toma PickOptions como parámetro para especificar información adicional. Los resultados son los mismos que PickAsync, pero en lugar de un único elemento FileResult se devuelve un elemento IEnumerable<FileResult> que se puede iterar.

Sugerencia

La propiedad FullPath no siempre devuelve la ruta de acceso física al archivo. Para obtener el archivo, use el método OpenReadAsync.

Diferencias entre plataformas

  • No hay diferencias entre las plataformas.

API