Xamarin.Essentials: Výběr souboru

Třída FilePicker umožňuje uživateli vybrat jeden nebo více souborů ze zařízení.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro a ujistěte se, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

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

Oprávnění ReadExternalStorage je povinné a musí být nakonfigurované v projektu pro Android. Můžete ho přidat následujícími způsoby:

Otevřete soubor AssemblyInfo.cs ve složce Properties a přidejte:

[assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage)]

NEBO aktualizujte manifest Androidu:

Otevřete soubor AndroidManifest.xml ve složce Vlastnosti a do uzlu manifestu přidejte následující kód.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Nebo klikněte pravým tlačítkem na projekt pro Android a otevřete jeho vlastnosti. V části Manifest pro Android vyhledejte oblast Požadovaná oprávnění: a zaškrtněte toto oprávnění. Tím se automaticky aktualizuje AndroidManifest.xml souboru.

Tip

Všechny metody musí být volány ve vlákně uživatelského rozhraní, protože kontroly oprávnění a požadavky jsou automaticky zpracovány objektem Xamarin.Essentials .

Výběr souboru

FilePicker.PickAsync() metoda umožňuje uživateli vybrat soubor ze zařízení. Při volání metody můžete určit jiný typ, který umožňuje určit název, který se má zobrazit, a typy souborů, které může PickOptions uživatel vybrat. Ve výchozím nastavení

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;
}

Výchozí typy souborů jsou k dispozici s FilePickerFileType.Images , FilePickerFileType.Png a FilePickerFilerType.Videos . Při vytváření můžete zadat vlastní typy souborů a PickOptions můžete je přizpůsobit pro každou platformu. Tady je příklad, jak byste specifikovat konkrétní typy souborů typu y:

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,
};

Výběr více souborů

Pokud chcete, aby váš uživatel vybral více souborů, můžete zavolat FilePicker.PickMultipleAsync() metodu . Přebírá také jako PickOptions parametr k zadání dalších informací. Výsledky jsou stejné jako , ale místo jednoho je vrácen objekt PickAsyncFileResult , který lze IEnumerable<FileResult> iterovat.

Tip

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

Rozdíly mezi platformami

  • Žádné rozdíly mezi platformami.

rozhraní API