Dela via


Öppna filer och mappar med en filväljare

viktiga API:er

Få åtkomst till filer och mappar genom att låta användaren interagera med en filväljare. Du kan använda klasserna FileOpenPicker och FileSavePicker för att komma åt filer och FolderPicker för att få åtkomst till en mapp.

Anmärkning

 Se det fullständiga exemplet i filväljarexemplet .

Anmärkning

I en skrivbordsapp (som innehåller WinUI 3-appar) kan du använda fil- och mappväljare från Windows.Storage.Pickers. Men om skrivbordsappen kräver administratörsbehörighet behöver du en annan metod eftersom dessa API:er inte är utformade för att användas i ett program med förhöjda behörigheter. Ett exempel finns i FileSavePicker.

Förutsättningar

Användargränssnitt för filväljare

En filväljare visar information för att orientera användare och ge en konsekvent upplevelse när du öppnar eller sparar filer.

Den informationen omfattar:

  • Den aktuella platsen
  • Objektet eller objekten som användaren valde
  • Ett träd med platser som användaren kan bläddra till. Dessa platser omfattar filsystemplatser, till exempel mappen Musik eller Nedladdningar, samt appar som implementerar filväljarekontraktet (till exempel Kamera, Foton och Microsoft OneDrive).

En e-postapp kan visa en filväljare där användaren kan välja bifogade filer.

en filväljare med två filer som ska öppnas.

Så här fungerar väljare

Med en väljare kan din app komma åt, bläddra och spara filer och mappar i användarens system. Din app tar emot dessa val som StorageFile- och StorageFolder- objekt, som du sedan kan använda.

Väljaren använder ett enda enhetligt gränssnitt för att låta användaren välja filer och mappar från filsystemet eller från andra appar. Filer som plockas från andra appar är som filer från filsystemet: de returneras som StorageFile-objekt . I allmänhet kan din app arbeta på dem på samma sätt som andra objekt. Andra appar gör filer tillgängliga genom att delta i filväljarkontrakt. Om du vill att din app ska tillhandahålla filer, en lagringsplats eller filuppdateringar till andra appar, se Integrera med filväljarkontrakt.

Du kan till exempel anropa filväljaren i din app så att användaren kan öppna en fil. Det gör appen till den anropande appen. Filväljaren interagerar med systemet och/eller andra appar så att användaren kan navigera och välja filen. När användaren väljer en fil returnerar filväljaren filen till din app. Här är processen för att användaren ska välja en fil från en app som tillhandahåller, till exempel OneDrive.

ett diagram som visar processen för en app att få en fil att öppnas från en annan app med filväljaren som gränssnitt mellan de två apparna.

Välj en enda fil: fullständig kodlista

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Välj en enda fil: steg för steg

Att använda en filväljare innebär att skapa och anpassa ett filväljareobjekt och sedan visa filväljaren så att användaren kan välja ett eller flera objekt.

  1. Skapa och anpassa en FileOpenPicker

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
    picker.FileTypeFilter.Add(".jpg");
    picker.FileTypeFilter.Add(".jpeg");
    picker.FileTypeFilter.Add(".png");
    

    Ange egenskaper för filväljarens objekt som är relevanta för dina användare och din app.

    I det här exemplet skapas en omfattande visuell visning av bilder på en lämplig plats som användaren kan välja mellan genom att ange tre egenskaper: ViewMode, SuggestedStartLocation och FileTypeFilter.

    • När du ställer in ViewMode till PickerViewModeThumbnail enum-värde skapas en rik, visuell skärm med hjälp av miniatyrbilder för att representera filer i filväljaren. Gör detta för att välja visuella filer som bilder eller videor. Annars använder du PickerViewMode.List. En hypotetisk e-postapp med funktionerna Bifoga bild eller video och Bifoga dokument skulle ange ViewMode som lämplig för funktionen innan filväljaren visas.

    • Anger du SuggestedStartLocation till Bilder med PickerLocationId.PicturesLibrary, startar användaren på en plats där de troligen hittar bilder. Ange SuggestedStartLocation till en plats som är lämplig för den typ av fil som väljs, till exempel Musik, Bilder, Videor eller Dokument. Från startplatsen kan användaren navigera till andra platser.

    • Om du använder FileTypeFilter för att ange filtyper fokuserar användaren på att välja filer som är relevanta. Om du vill ersätta tidigare filtyper i FileTypeFilter med nya poster använder du ReplaceAll i stället för Lägg till.

  2. Visa FileOpenPicker-

    • Så här väljer du en enda fil

      Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
      if (file != null)
      {
          // Application now has read/write access to the picked file
          this.textBlock.Text = "Picked photo: " + file.Name;
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      
    • Så här väljer du flera filer

      var files = await picker.PickMultipleFilesAsync();
      if (files.Count > 0)
      {
          StringBuilder output = new StringBuilder("Picked files:\n");
      
          // Application now has read/write access to the picked file(s)
          foreach (Windows.Storage.StorageFile file in files)
          {
              output.Append(file.Name + "\n");
          }
          this.textBlock.Text = output.ToString();
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      

Välj en mapp: fullständig kodlista

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");

Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
    // Application now has read/write access to all contents in the picked folder
    // (including other sub-folder contents)
    Windows.Storage.AccessCache.StorageApplicationPermissions.
    FutureAccessList.AddOrReplace("PickedFolderToken", folder);
    this.textBlock.Text = "Picked folder: " + folder.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Tips/Råd

När din app kommer åt en fil eller mapp via en väljare lägger du till den i appens FutureAccessList eller MostRecentlyUsedList för att hålla reda på den. Du kan lära dig mer om hur du använder de här listorna i Spåra nyligen använda filer och mappar.

Se även

Windows.Storage.Pickers

Filer, mappar och bibliotek

Integrera med filväljarkontrakt