Push de fichier avec API
-
Bonjour,
Je viens d'essayer cette version et effectivement celà fonctionne, mais j'ai toujours un manque au niveau du file, il me dit : 'file or template_nid is a mandatory parameter'. Je passe le fichier comme octet-stream, est-ce la bonne méthode ?
Merci encore pour votre réactivité.
Yannick -
@Yannick said in Push de fichier avec API:
requests.post(url, params=data, headers=headers)
Bonsoir @Yannick,
D'après la documentation python, pour attacher un fichier il conviendrait plutôt de le passer directement dans le requests.post de cette manière :
requests.post(url, params=data, headers=headers) url = "https://gofast.ceo-vision.com/api/node/node" headers = {'Content-Type': "application/json", 'Authorization': "Basic user:password(Base 64 encoded)"} data = {'type': 'alfresco_item', 'title': file.filename,'locations':'/Site/_Organisation/myorga/2021/'} files = {'file': file} print(requests.post(url, params=data, headers=headers, files=files).json()
Bonne soirée !
Cordialement,
-
Bonjour, j'ai également un problème pour push un fichier avec l'API (GoFast version 4).
Je ne comprends pas très bien la documentation, qui donne deux headers différents et deux body différents.
Pour l'instant, j'ai cette requête:POST /api/node/node HTTP/1.1 Authorization: Basic login:mdp en base64 Host: gofast.univ-lemans.fr Content-Type: application/json {"type": "alfresco_item", "locations": "/Sites/_vgirod#ogdocuments", "file": "test", "title":"titre"}
qui me renvoie "file or template_nid is a mandatory parameter"
J'ai l'impression que je dois faire deux requêtes à la suite? Et si oui, avez-vous un exemple fonctionnel?
-
Bonjour @vgirod
Quel outil ou language utilisez vous pour communiquer avec l'API ?
La manière de poster un fichier diffère pas mal selon le language qu'on utilise (Python, PHP, JS etc)
Merci d'avance !
Cordialement,
-
J'utilise java mais ici, j'ai utilisé un testeur d'api lambda en ligne pour voir si justement le problème vennait de mon code.
La requête une fois envoyée est la même quelque soit le language utilisé il me semble, mais oui, le code change beaucoup en fonction du language. J'utilise ce code pour le moment:
(en JAVA)URL url = new URL("https://gofast.univ-lemans.fr/api/node/node"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); String basicAuth = Base64.getEncoder().encodeToString("login:mdp".getBytes()); conn.setRequestProperty ("Authorization", "Basic "+basicAuth); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestMethod("POST"); conn.setDoOutput(true); OutputStream osw = conn.getOutputStream(); String body = "{\"type\": \"alfresco_item\"," + "\"locations\": \"/Sites/_vgirod#ogdocuments\"," + "\"file\": \"test\"," + "\"title\":\"titre\"}"; osw.write(body.getBytes()); osw.flush(); osw.close(); conn.connect();
-
Oui je vois, le Content-Type global doit être de type multipart/form-data. Ce Content type permet de transmettre des parties "fichiers" et des parties "formulaire", ce qui correspond à notre JSON.
Si j'utilise advanced rest client, cela correspond à :
Et dans le body j'ai mon fichier :
Puis mes données :
Attention d'ailleurs, votre champ locations doit être un tableau en json format texte (exemple : ["/Sites/_jlemangarin"]) sans le #ogdocuments.
J'ai trouvé des exemples d'utilisation ici mais je n'ai jamais essayé de le faire en Java, si vous n'y arrivez pas j'essaierai de le faire dans la matinée. J'ai peut être un exemple d'utilisation quelque part dans un des modules Bonita que nous utilisons.
-
-
Le code fourni sur cette page fonctionne parfaitement pour du java:
https://blog.cpming.top/p/httpurlconnection-multipart-form-data
-
Super, merci pour ce retour !