Problème de téléchargement de fichier sur une canvas app

  • Problème de téléchargement de fichier sur une canvas app

    Posté par Valentin sur 22 juillet 2024 à 11h30

    Bonjour à tous,

    Je créé ce post car je rencontre actuellement une problématique dont je ne sais pas s’il y aurait une solution ou non sans avoir à passer par un flux power automate ou une liste SharePoint.

    En effet, dans la base dataverse que j’utilisé pour ma canvas app, nous avons une table contenant des fichier liés à une autre table.

    Pour upload des fichier en base, il n’y a aucun soucis, tout fonctionne. En revanche, lorsqu’il s’agit de download un fichier, je tombe sur cette erreur :

    Après quelques recherches, il s’avère que cette problématique serait dû au fait qu’on n’est pas connecté à l’API dynamics via SSO comme indiqué sur ce post :
    office365 – Dynamics (Power Platform) 401 Unauthorized error when opening the Web API URL – Stack Overflow

    Pour résoudre le problème, il faut donc se connecter comme indiqué sur le lien de l’environnement pour se connecter puis cliquer sur le fichier à télécharger une fois la connexion établie avec dynamics.

    Ma question est donc la suivante :
    Comment faire ne sorte que le token de connexion à l’API Dynamics soit généré au moment où l’utilisateur se connecte sur la canvas app ?
    Le token est expiré toutes les 12h pour information.

    Merci d’avance à vous

    DavidZed a répondu Il y a 2 mois, 2 semaines 3 Membres · 8 Réponses
  • 8 Réponses
  • R3dKap

    Membre
    24 juillet 2024 à 11h43

    Salut Valentin,

    Mets tes fichiers sur SharePoint ? 😅 (en plus ils ne consommeront pas le quota de ta Power Platform 😉)

    Sinon, est-ce que mettre un élément masqué sur l’écran qui attaque une données fixe côté D365 ne génèrerait-il pas automatiquement le token ?

    @DavidZed une idée de ton côté ?

  • DavidZed

    Membre
    24 juillet 2024 à 20h59

    Hello, effectivement, si l’utilisateur n’a pas génré de token en allant sur le l’environnement une requête API dataverse retournera une erreur 401

    La solution de contournement qui me parait la plus simple est d’utiliser un contrôle Attach File dans un formulaire et de le mettre dans ta galerie pour permettre le téléchargement des fichiers sans passer par l’API

  • DavidZed

    Membre
    24 juillet 2024 à 21h11

    Voici un code YAML d’une galerie avec un contrôle File attachment,

    - Gallery12:
    Control: Gallery
    Variant: galleryVertical
    Properties:
    Items: =Tutus
    DelayItemLoading: =true
    Layout: =Layout.Vertical
    LoadingSpinner: =LoadingSpinner.Data
    TemplateSize: =120
    X: =689
    Y: =148
    Children:
    - DataCardValue67_1:
    Control: Attachments
    Properties:
    AddAttachmentText: ="Upload file"
    Items: |-
    =If(!IsBlank(ThisItem.'File Column'.FileName), Table({DisplayName: ThisItem.'File Column'.FileName, Value: ThisItem.'File Column'.Value}), Blank())
    MaxAttachments: =1
    MaxAttachmentsText: =""
    NoAttachmentsText: ="There is no file."
    DisplayMode: =DisplayMode.View
    Height: =78
    PaddingBottom: =5
    PaddingLeft: =If(Self.DisplayMode = DisplayMode.Edit, 5, 0)
    PaddingRight: =5
    PaddingTop: =5
    Width: =534
    X: =63
    Y: =21

    il te suffit de remplacer

    Dans Gallery12.Items : le nom de ta table de fichiers filtrés par l’enregistrement parent

    Toutes les valeurs ‘File Column’ par le nom de ta colonne qui contient le fichier

    L’utilisateur pourra télélcharger les fichier simplement en cliquant sur le nom ou l’icone

  • Valentin

    Membre
    25 juillet 2024 à 17h09

    Hola David,

    Merci bien pour ta réponse.
    J’ai déjà tenté cette solution mais pour une raison qui m’échape lorsque je fais l’action de télécharger le fichier, celui-ci me retourne une erreur de téléchargement dans l’image suivante :

    Tandis que quand je génère le token en me connectant sur l’environnement puis que je clique sur le bouton qu’on avait mit par dessus pour utiliser la fonction Download de power fx, le téléchargement fonctionnait et je récupérer bien le fichier correspondant.

  • DavidZed

    Membre
    26 juillet 2024 à 18h41

    C’est surprenant, cela fonctionnait très bien avant, j’ai réussi à identifier le problème, cela provient de la nouvelle barre de formules.

    Pour y remédier :

    Sauvegarder l’app

    réactiver la barre de formule héritée dans les settings :

    En sélectionnant ton object attachment, tu trouveras deux champs qui n’apparraissaient plus :

    Il suffit de mettre “Value” à la place du 2eme FileName et là ça marche

    On peut ensuite désactiver la barre de formule héritée

  • Valentin

    Membre
    29 juillet 2024 à 9h30

    Bonjour David,

    En effet, cela fonctionne bien de cette manière.

    Je te remercie pour tes réponses ! 😁

  • R3dKap

    Membre
    29 juillet 2024 à 9h57

    @DavidZed t’es en train de dire que le contrôle Attachment fonctionne différemment selon le type de barre de formule qui est actif ?!? 😮

    Ou j’ai mal compris…

  • DavidZed

    Membre
    29 juillet 2024 à 10h12

    Il y a des propriétés qui n’apparraissent que si on remet la barre de formule en legacy, j’ai été aussi étonné de voir que le volet des paramètres était lié à la barre de formule.

    J’ai remonté le problème à l’équipe produit

Connectez-vous pour répondre.