Télécharger un document depuis une action

Télécharger un document depuis une action
0
Tags: #<Tag:0x00007f7691085638>

Bonjour,

Nous avons un objet avec des documents que le client upload lui même.
Nous aimerions lancer le téléchargement de ces documents depuis un autre objet.
Après avoir récupérer le document depuis une action sur cette autre objet, est-il possible de lancer le téléchargement de ce document coté client ?

En fait c’est plus une publication qu’il faut paramétrer pour télécharger un doc, pas une action.
Une publication de type “méthode” où le contenu généré est un doc lu sur un autre objet dans ce cas

Je ne suis pas sur de comprendre votre modèle de données.
Vous avez des attributs de type Document sur un objet A, que vous aimeriez télécharger depuis un objet B qui n’a rien à voir ?

  • Soit vous ramenez par jointure les champs (ou via un lien virtuel de A vers B…), et les docs sont directement accessibles dans B

  • Soit vous créez une action back sur B qui retourne du Javascript client avec un document.location = <URL du document> ou window.open… car il faut éviter de monter le doc en mémoire et d’envoyer le contenu au front.

Pour obtenir l’URL d’un doc :
DocTool.getURL(DocumentDB doc, String cdisp, boolean cache, boolean thumbnail)

ou si le DocumentDB n’est pas connu :

HTMLTool.getDocumentURL(String object, String field, String rowId, String docRowId, String cdisp, boolean cache, boolean thumbnail)

exemple
HTMLTool.getDocumentURL("objectA", "docFieldA", "123", "456", HTMLTool.DISP_ATTACH, false, false)

ou encore HTMLTool.getPublicDocumentURL si le doc est publique

bonjour,

Soit vous créez une action back sur B qui retourne du Javascript client avec un document.location = <URL du document> ou window.open… car il faut éviter de monter le doc en mémoire et d’envoyer le contenu au front.

J’ai utilisé la méthode SendJavaScript() pour envoyer du code javaScript afin d’ouvrir le lien.
ça n’a pas l’air de marcher.

public String getModeOperatoire() {
        String URL = getDocuURL();
        return sendJavaScript("window.location.href="+URL+";");
    }

Il manque des quotes autour de votre URL: sendJavaScript("window.location.href='"+URL+"';");

Vous deviez avoir un message d’erreur dans la console de votre navigateur, pensez à regarder cette console, dans la plupart des cas la réponse aux pbs s’y trouve.

Merci.
J’ai aussi réussi avec la méthode this.sendRedirect(URL)

Oui effectivement c’est mieux avec sendRedirect()

1 Like