Xamarin.Essentials: 파일 선택기

FilePicker 클래스를 사용하면 사용자가 디바이스에서 단일 또는 여러 파일을 선택할 수 있습니다.

시작하기

이 API를 사용하기 전에 라이브러리가 제대로 설치되고 프로젝트에 설정되어 있는지 확인하기 위해 Xamarin.Essentials에 대한 시작 가이드를 읽어보세요.

FilePicker 기능에 액세스하려면 다음 플랫폼 관련 설정이 필요합니다.

추가 설정이 필요하지 않습니다.

사용 권한 검사 및 요청은 Xamarin.Essentials에서 자동으로 처리되기 때문에 UI 스레드에서 모든 메서드를 호출해야 합니다.

파일 선택

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