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
rozhraní API
- Xamarin.Essentials /FilePicker" data-linktype="external">filePicker source code
- Dokumentace k rozhraní FilePicker API