Question

PROBLÈME

Je veux être en mesure de joindre un / attachement multiple (s) que le document est créé, via la ligne de commande (voir ci-dessous). Je ne peux que cela fonctionne dans Futon (Couchbase), mais seulement après un document a déjà été créé.

J'ai essayé ce qui suit:

curl -X PUT 'http://username:password@localhost:5984/client_info'

curl -X POST 'http://username:password@localhost:5984/client_info' -H 'Content-Type: application/json' -d '{"client_type": "Private", "client_name": "John Doe","client_email": "john@doe.com","client_city": "Toronto","created_at": "2011-09-06 12:45:03","expires_at": "2012-01-01 00:00:00", "_attachments": {
   "test01.jpg": {
       "content_type": "image/jpeg",
       "length": 30189          
    }
  }
}'

Cela ne entraîne l'erreur suivante:

{"error":"unknown_error","reason":"function_clause"}

Merci

Était-ce utile?

La solution

Vous devez télécharger votre pièce jointe dans une étape séparée, contenant le fichier de fixation réelle dans le corps de la demande. Alors d'abord créer votre document régulier, émettre alors une autre demande où vous téléchargez le fichier. Voici un exemple sur la façon de télécharger une pièce jointe à l'aide de Flexion (http://guide.couchdb.org/draft/api.html#attachments): curl -v -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689 --data-binary @artwork.jpg -H "Content-Type: image/jpg"

Et voici l'API officielle pour les pièces jointes: http://wiki.apache.org/couchdb/HTTP_Document_API#Standalone_Attachments

Autres conseils

Cela fonctionne pour moi, et semble un peu plus simple. Le premier doit être lors de la création du document, si vous n'ajoutez pas rev. Mon exemple utilise la base de données "test1".

$ curl -H "Content-Type: image/jpeg" -X PUT --data-binary @test01.jpg 'http://username:password@localhost:5984/test1/client_info/test01.jpg'

{"ok":true,"id":"client_info","rev":"1-8584b6af9d0c3347ba08202697f09952"}

$ curl -H "Content-Type: image/jpeg" -X PUT --data-binary @test02.jpg 'http://username:password@localhost:5984/test1/client_info/test02.jpg?rev=1-8584b6af9d0c3347ba08202697f09952'

{"ok":true,"id":"client_info","rev":"2-623b94aba30944d6744f5c11cf03fc10"}

Voici un moyen de télécharger une pièce jointe dans la même demande que la création du document.

curl -X POST 'http://user:pass@localhost:5984/client_stuff' -H 'Content-Type: application/json' -d '{"stuff": "stuff", "_attachments": {
   "empty.gif": {
       "content_type": "image/gif",
       "data": "'$(openssl base64 < file.gif)'"
    }
  }
}'

En fonction de votre cas d'utilisation, l'encodage base64 ne peut pas être si mauvais.

Plus d'infos: http://wiki.apache.org/couchdb/HTTP_Document_API#Inline_Attachments

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top