Sdílet prostřednictvím


Výběr souboru

Browse sample. Procházení ukázky

Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). IFilePicker IFilePicker Pomocí rozhraní můžete uživateli zobrazit výzvu k výběru jednoho nebo více souborů ze zařízení.

Výchozí implementace IFilePicker rozhraní je k dispozici prostřednictvím FilePicker.Default vlastnosti. Rozhraní IFilePicker i FilePicker třída jsou obsaženy v Microsoft.Maui.Storage oboru názvů.

Začínáme

Pro přístup k funkcím FilePicker se vyžaduje následující nastavení specifické pro platformu.

Pokud vaše aplikace cílí na Android 12 nebo nižší, musíte požádat o READ_EXTERNAL_STORAGE oprávnění. Pokud vaše aplikace cílí na Android 13 nebo vyšší a potřebuje přístup k souborům, které vytvořily jiné aplikace, musíte místo oprávnění požádat o jedno nebo více následujících podrobných oprávnění READ_EXTERNAL_STORAGE :

  • READ_MEDIA_IMAGES
  • READ_MEDIA_VIDEO
  • READ_MEDIA_AUDIO

Tato oprávnění je možné přidat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy using přidejte následující atributy sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage, MaxSdkVersion = 32)]
    [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaAudio)]
    [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaImages)]
    [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaVideo)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následujícímanifest:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <!-- Required only if your app needs to access images or photos that other apps created -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <!-- Required only if your app needs to access videos that other apps created -->
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <!-- Required only if your app needs to access audio files that other apps created -->
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />    
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte výše uvedená oprávnění. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Důležité

Všechny metody musí být volána ve vlákně uživatelského rozhraní, protože kontroly oprávnění a požadavky se automaticky zpracovávají rozhraním .NET MAUI.

Výběr souboru

Metoda PickAsync vyzve uživatele k výběru souboru ze zařízení. PickOptions Tento typ slouží k určení názvu a typů souborů povolených pomocí nástroje pro výběr. Následující příklad ukazuje otevření výběru a zpracování vybraného obrázku:

public async Task<FileResult> PickAndShow(PickOptions options)
{
    try
    {
        var result = await FilePicker.Default.PickAsync(options);
        if (result != null)
        {
            if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                using var stream = await result.OpenReadAsync();
                var image = ImageSource.FromStream(() => stream);
            }
        }

        return result;
    }
    catch (Exception ex)
    {
        // The user canceled or something went wrong
    }

    return null;
}

Výchozí typy souborů jsou k dispozici s FilePickerFileType.Images, FilePickerFileType.Pnga FilePickerFilerType.Videos. Vlastní typy souborů můžete zadat na platformu vytvořením instance FilePickerFileType třídy. Konstruktor této třídy přebírá slovník, který je klíčem DevicePlatform typu k identifikaci platformy. Hodnota klíče slovníku je kolekce řetězců představujících typy souborů. Tady je příklad, jak byste zadali konkrétní typy comic souborů:

var customFileType = new FilePickerFileType(
                new Dictionary<DevicePlatform, IEnumerable<string>>
                {
                    { DevicePlatform.iOS, new[] { "public.my.comic.extension" } }, // UTType values
                    { DevicePlatform.Android, new[] { "application/comics" } }, // MIME type
                    { DevicePlatform.WinUI, new[] { ".cbr", ".cbz" } }, // file extension
                    { DevicePlatform.Tizen, new[] { "*/*" } },
                    { DevicePlatform.macOS, new[] { "cbr", "cbz" } }, // UTType values
                });

PickOptions options = new()
{
    PickerTitle = "Please select a comic file",
    FileTypes = customFileType,
};

Hledání souborů na základě typu souboru se může lišit od jedné platformy od druhé. Další informace najdete v tématu Rozdíly mezi platformami.

Výběr více souborů

Pokud chcete, aby uživatel vybral více souborů, zavolejte metodu FilePicker.PickMultipleAsync . Tato metoda také přebírá PickOptions parametr pro zadání dalších informací. Výsledky jsou stejné jako PickAsync, ale místo vráceného FileResultIEnumerable<FileResult> typu se vrátí typ se všemi vybranými soubory.

Tip

Vlastnost FullPath nevrací vždy fyzickou cestu k souboru. K získání souboru použijte metodu OpenReadAsync .

Rozdíly mezi platformami

Tato část popisuje rozdíly specifické pro platformu s nástrojem pro výběr souborů.

Zobrazí PickOptions.PickerTitle se na úvodní výzvě uživateli, ale ne v samotném dialogovém okně pro výběr.

Při filtrování souborů podle typu použijte typ MIME souboru. Seznam typů MIME najdete v tématu Mozilla – Běžné typy MIME.