Upload en REST

cancel
Showing results for 
Search instead for 
Did you mean: 
bungo
Member II

Upload en REST

Bonjour,

J'implore votre aide car je tourne en rond depuis une semaine.

Je cherche à transférer (upload) un fichier à partir de l'API  "POST /alfresco/service/sample/upload" (http://localhost:8080/alfresco/service/sample/upload).

Je fait bien un "post"  mais je ne comprends pas le format de donnée à envoyer à Alfresco ?
Comment formaliser ce fameux "formdata ? "http://wiki.alfresco.com/wiki/Web_Scripts#formdata
Je ne voie pas bien comment coder "filedata, (mandatory) HTML type file"

En retour j'ai toujours "Le serveur distant  a retourné une erreur : (400) Demande incorrecte."

J'utilise la version Alfresco Community 3.2 et je développe en Csharp.

+++++++++ upload REST API +++++++++
Package: /org/alfresco/repository/upload

File Upload POST /alfresco/service/api/upload

Upload file content and meta-data into repository.
HTML form data
•filedata, (mandatory) HTML type file
•siteid
•containerid
•uploaddirectory
•updatenoderef
•filename
•description
•contenttype
•majorversion
•overwrite
•thumbnails

Return content
•nodeRef

Return status: STATUS_OK (200)

Authentication: user
Transaction: required
Format Style: any
Default Format: json
Lifecycle: public_api

Id: org/alfresco/repository/upload/upload.post
Descriptor: classpath:alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.desc.xml
3 Replies
cytrix
Member II

Re: Upload en REST

Bonjour,

Je vous conseille de jeter un coup d'oeil au post de Philippe Dubois qui donne un exemple java d'upload avec le service que vous voulez utiliser (/alfresco/s/api/upload). Voir sa fonction "testUploadDocument" ici http://forums.alfresco.com/fr/viewtopic.php?f=25&t=2816#p12922.
Par contre attention, je pense que ce service n'est utilisable que pour l'ajout de documents au répertoire "Sites" d'Alfresco, donc pour le contenu "Share". Si vous voulez uploader un document dans un autre répertoire du client "Alfresco explorer" (l'ancienne interface avant Share), par exemple l'espace privé d'un utilisateur, je pense qu'il faut plutôt utiliser :

Create folder or document (createDocument, createFolder)
POST /alfresco/service/api/node/{store_type}/{store_id}/{id}/children
POST /alfresco/service/api/path/{store_type}/{store_id}/{id}/children

Attention, ceci n'est en aucun cas une affirmation, mais plutôt issu de mes réflexions Smiley Wink .

J'essaie moi aussi de faire un upload et je me tourne plutôt vers ce service. Je vous tiendrai au courant si j'ai du nouveau.

EDIT : ce post là sur le forum anglais me semble intéressant comme base de départ : http://forums.alfresco.com/en/viewtopic.php?f=45&t=19036
bungo
Member II

Re: Upload en REST

Tout d'abord Merci cytrix pour ton aide.

L'exemple Java utilise des classes Apache comme "FilePart" que je ne trouve pas en Csharp!.

Pour l'instant ma requête ne passe pas car mal formatée (ma requête http devant être une sorte de submit Form, j'ai du mal à la mettre en forme pour qu'elle soit acceptée par le service Web d'entré d'Alfresco, ma requête  n'arrive pas encore au script d'upload). Je gère sans problème le ticket dans le Header HTML.

Ceci dit je ne savais pas qu'il fallait mieux utiliser ces API que tu cites :
Create folder or document (createDocument, createFolder)
POST /alfresco/service/api/node/{store_type}/{store_id}/{id}/children
POST /alfresco/service/api/path/{store_type}/{store_id}/{id}/children

Je vais regarder ça de plus près,

Merci encore Cytrix.

Didier

PS: Dès que j'ai un code qui fonctionne je le poste.
bungo
Member II

Re: Upload en REST

J'ai réussi à envoyer un formulaire dans Alfresco.
Le script le décode bien et le met dans le DM.

Par contre je n'y arrive qu'avec des fichiers texte !
Je ne sais pas comment encoder mon fichier binaire dans ma requête FORM POST afin que le contenu relu pas le webscript soit bien écrit dans le DM Alfresco sans être modifié ?