Exemple : opérations sur les images en utilisant l’API Web de Dataverse

Cet exemple .NET 6.0 montre comment effectuer des opérations avec les colonnes d’image en utilisant l’API Web de Dataverse.

Cet exemple utilise le code d’assistance commun dans la Bibliothèque de classes WebAPIService (C#).

Conditions préalables

  • Microsoft Visual Studio 2022
  • Accédez à Dataverse avec les privilèges d’administrateur système ou de personnalisateur du système.

Comment exécuter l’exemple

  1. Clonez ou téléchargez le référentiel Exemples PowerApps.

  2. Ouvrez le fichier PowerApps-Samples\dataverse\webapi\C#-NETx\ImageOperations\ImageOperations.sln en utilisant Visual Studio 2022.

  3. Modifiez le fichier appsettings.json pour définir les valeurs de propriété suivantes :

    Property Instructions
    Url URL pour votre environnement. Remplacez la valeur https://yourorg.api.crm.dynamics.com de l’espace réservé avec la valeur de votre environnement. Voir Afficher les ressources pour les développeurs pour trouver ça.
    UserPrincipalName Remplacez la valeur you@yourorg.onmicrosoft.com de l’espace réservé avec la valeur UPN pour accéder à l’environnement.
    Password Remplacez la valeur yourPassword de l’espace réservé avec le mot de passe que vous utilisez.
  4. Enregistrer le fichier appsettings.json

  5. Appuyez sur F5 pour exécuter l’exemple.

Sortie de l’exemple

La sortie de l’exemple doit ressembler à ce qui suit :

Creating image column named 'sample_ImageColumn' on the account table ...
Created image column named 'sample_ImageColumn' in the account table.
Create 5 records while CanStoreFullImage is false.
        Created account: 'CanStoreFullImage false 144x144.png'
        Created account: 'CanStoreFullImage false 144x400.png'
        Created account: 'CanStoreFullImage false 400x144.png'
        Created account: 'CanStoreFullImage false 400x500.png'
        Created account: 'CanStoreFullImage false 60x80.png'
Set the CanStoreFullImage property to True
Create 5 records while CanStoreFullImage is true.
        Created account: 'CanStoreFullImage true 144x144.png'
        Created account: 'CanStoreFullImage true 144x400.png'
        Created account: 'CanStoreFullImage true 400x144.png'
        Created account: 'CanStoreFullImage true 400x500.png'
        Created account: 'CanStoreFullImage true 60x80.png'
Retrieving records with thumbnail images:
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 144x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 144x400.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 400x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 400x500.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage false 60x80.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 144x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 144x400.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 400x144.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 400x500.png_retrieved.png
        Thumbnail-sized file column data saved to DownloadedImages\CanStoreFullImage true 60x80.png_retrieved.png
Attempt to download full-size images for all 10 records using 3 different methods:
Download full-sized files with actions: 5 should fail
        Download failed: No FileAttachment records found for imagedescriptorId: e40bdcf1-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id e30bdcf1-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2258d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2158d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2658d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2558d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2a58d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2958d4f7-598d-ed11-81ad-000d3a9933c9
        Download failed: No FileAttachment records found for imagedescriptorId: 2e58d4f7-598d-ed11-81ad-000d3a9933c9 for image attribute: sample_imagecolumn of account record with id 2d58d4f7-598d-ed11-81ad-000d3a9933c9
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_actions.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_actions.png
Download full-sized files with chunks: 5 should fail
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_chunks_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_chunks_full-sized.png
Download full-sized files in single requests: 5 should fail
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        No full-sized image data returned because record was created while CanStoreFullImage was false.
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x144.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 144x400.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x144.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 400x500.png_downloaded_with_stream_full-sized.png
        Full-sized file downloaded to DownloadedImages\CanStoreFullImage true 60x80.png_downloaded_with_stream_full-sized.png
Deleting the image data from the columns using 3 different methods:
        CanStoreFullImage false 144x144.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 144x400.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 400x144.png sample_imagecolumn deleted with PATCH
        CanStoreFullImage false 400x500.png sample_imagecolumn deleted with PUT
        CanStoreFullImage false 60x80.png sample_imagecolumn deleted with PUT
        CanStoreFullImage true 144x144.png sample_imagecolumn deleted with PUT
        CanStoreFullImage true 144x400.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 400x144.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 400x500.png sample_imagecolumn deleted with DELETE
        CanStoreFullImage true 60x80.png sample_imagecolumn deleted with DELETE
Deleted the account records created for this sample.
Deleting the image column named 'sample_ImageColumn' on the account table ...
Deleted the image column named 'sample_ImageColumn' in the account table.
Sample completed.

Montre ce qui suit

Le code de cet exemple se trouve dans le fichier Program.cs.

Le projet utilise une classe Utility pour effectuer des opérations impliquant la création ou la récupération des données de schéma. Cette classe se trouve dans le fichier Utility.cs.

Ce projet effectue ces opérations :

Créer une colonne d’image

Cet exemple doit créer une nouvelle colonne d’image qui est l’image principale de la table du compte. Il doit également remettre le système dans son état d’origine une fois terminé. Le programme fait donc les choses suivantes dès le début :

  1. Capturez le nom de l’image principale d’origine à l’aide de la méthode Utility.GetTablePrimaryImageName.

  2. Utilisez la méthode Utility.CreateImageColumn pour créer une nouvelle colonne d’image nommée sample_ImageColumn sur la table du compte si elle n’existe pas déjà.

    Notes

    Cette valeur CanStoreFullImage de colonne d’images est fausse.

  3. Utilisez la méthode Utility.SetTablePrimaryImageName pour faire de la nouvelle sample_ImageColumn la colonne d’image principale.

Créer des enregistrements de compte avec des données d’image

  1. Le programme parcourt en boucle une liste de cinq noms de fichiers qui correspondent aux noms des fichiers du dossier Images.
  2. Pour chaque image, le programme crée un enregistrement de compte dont le name est défini sur CanStoreFullImage false {fileName} et le fichier byte[] est défini comme valeur de sample_ImageColumn.
  3. Le programme utilise alors la méthode Utility.UpdateCanStoreFullImage pour définir la valeur de définition de la colonne sample_ImageColumn CanStoreFullImage sur vrai.
  4. Une fois de plus, le programme passe en revue les noms de fichiers et crée cinq enregistrements de compte avec les mêmes fichiers d’image définis avec la valeur sample_ImageColumn. Cette fois-ci, le name est CanStoreFullImage true {fileName}

Dans le code suivant, nous pouvons voir comment la valeur de la propriété CanStoreFullImage modifie les données disponibles.

Récupérer les enregistrements du compte

  1. Le code récupère les 10 enregistrements de compte créés à l’étape précédente, y compris les données d’image.

  2. Pour chaque enregistrement de compte, les données d’image sont téléchargées dans le dossier DownloadedImages sous le nom {recordName}_retrieved.png.

    Notes

    Tous ces enregistrements sont des images de la taille d’une miniature.

Télécharger les images des enregistrements de compte

Ce programme utilise trois méthodes différentes pour télécharger des fichiers image.

Notes

Dans chaque cas, 5 des 10 opérations échouent parce qu’aucune image de taille normale n’a été téléchargée alors que la valeur CanStoreFullImage était définie sur faux. Les enregistrements créés pendant que la valeur CanStoreFullImage était définie sur vrai ont réussi.

Télécharger avec des actions

Le code utilise la méthode statique DownloadImageWithActions, qui encapsule l’utilisation des actions InitializeFileBlocksDownload et DownloadBlock pour télécharger les images comme décrit dans Utiliser les messages Dataverse pour télécharger un fichier.

Notes

Ces opérations échouent lorsqu’il n’y a pas d’image en taille réelle à télécharger. Le message d’erreur est le suivant : No FileAttachment records found for imagedescriptorId: <guid> for image attribute: sample_imagecolumn of account record with id <guid>.

Télécharger avec des blocs

Le code utilise la méthode statique DownloadImageWithChunks, qui montre comment télécharger des images comme décrit dans Télécharger le fichier en blocs en utilisant l’API Web.

Notes

Ces opérations n’échouent pas lorsqu’il n’y a pas d’image de taille normale à télécharger, elles renvoient simplement 204 No Content.

Télécharger avec des flux

Le code utilise la méthode statique DownloadImageWithStream, qui montre comment télécharger des images comme décrit dans Télécharger un fichier dans une seule requête en utilisant l’API Web

Notes

Ces opérations n’échouent pas lorsqu’il n’y a pas d’image de taille normale à télécharger, elles renvoient simplement 204 No Content.

Supprimer les données d’image

  1. Le programme utilise trois méthodes différentes pour illustrer la suppression des valeurs d’image, en utilisant PATCH, PUT et DELETE.
  2. Le programme vérifie que les enregistrements ont été supprimés en les récupérant à nouveau en utilisant les mêmes critères que précédemment. La valeur de la colonne d’image est null.

Nettoyer

Pour laisser le système dans l’état antérieur à l’exécution de l’exemple, le programme effectue les opérations suivantes :

  • Supprimer les enregistrements du compte.
  • Rétablir la valeur d’origine de l’image principale de la table de compte.
  • Supprimer la colonne d’images.

Voir aussi

Utiliser les données de colonne d’image
Utiliser des définitions de colonne d’image avec du code
Utiliser les données de colonne de fichier
Exemple : opérations sur les images en utilisant le SDK Dataverse pour .NET

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).