Xamarin.Essentials: средство выбора файлов
Класс FilePicker позволяет пользователю выбрать один или несколько файлов на устройстве.
Начало работы
Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.
Для доступа к функции FilePicker нужно создать описанную ниже конфигурацию для конкретной платформы.
Совет
Все методы должны вызываться в потоке пользовательского интерфейса, так как проверки разрешений и запросы автоматически обрабатываются Xamarin.Essentials.
Выбор файла
Метод FilePicker.PickAsync()
позволяет пользователю выбрать файл на устройстве. Вы можете указать различные параметры PickOptions
при вызове метода, что позволяет задать отображаемый заголовок и типы файлов, которые пользователю разрешено выбирать. По умолчанию
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;
}
Типы файлов по умолчанию предоставляются с помощью FilePickerFileType.Images
, FilePickerFileType.Png
и FilePickerFilerType.Videos
. При создании PickOptions
можно указать пользовательские типы файлов для каждой платформы. Например, указать типы файлов комиксов можно следующим образом:
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,
};
Выбор нескольких файлов
Если вы хотите, чтобы пользователь мог выбрать несколько файлов, вызовите метод FilePicker.PickMultipleAsync()
. Он также принимает параметр PickOptions
для указания дополнительных сведений. Результат такой же, как и при вызове метода PickAsync
, но вместо одного объекта FileResult
возвращается IEnumerable<FileResult>
, который можно перебирать.
Совет
Свойство FullPath
не всегда возвращает физический путь к файлу. Чтобы получить файл, используйте метод OpenReadAsync
.