Поделиться через


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.

Различия платформ

  • Различия платформ отсутствуют.

API