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.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
메서드를 사용합니다.