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.
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
.