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.PngFilePickerFilerType.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,但是會傳回可逐一查看的 ,而不是傳回單FileResultIEnumerable<FileResult>一 。

提示

屬性 FullPath 不一定會傳回檔案的實體路徑。 若要取得檔案,請使用 OpenReadAsync 方法。

平台差異

  • 無平台差異。

API