Xamarin.Essentials:檔案選擇器
FilePicker 類別可讓使用者從裝置挑選單一或多個檔案。
開始使用
若要開始使用此 API,請閱讀 入門指南Xamarin.Essentials,以確保連結庫已正確安裝並設定在您的專案中。
若要存取 FilePicker 功能,需要下列平臺特定設定。
提示
所有方法都必須在 UI 線程上呼叫,因為許可權檢查和要求會自動由 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.Png
和FilePickerFilerType.Videos
一起FilePickerFileType.Images
提供。 您可以在建立 時指定自定義檔類型, 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
方法。