problème strong> Je veux être capable de joindre une (s) pièce (s) (s) (s) de pièce (s) à la fois que le document est créé, via la ligne de commande (voir ci-dessous). Je ne peux que faire travailler cela pour travailler dans Futon (Couchbase), mais seulement une fois qu'un document a déjà été créé. P> J'ai essayé ce qui suit: p> {"error":"unknown_error","reason":"function_clause"}
3 Réponses :
Vous devez télécharger votre pièce jointe dans une étape séparée, contenant le fichier de pièce jointe réel dans le corps de la demande. Donc, créez d'abord votre document régulier, puis émettez une autre demande dans laquelle vous téléchargez le fichier. Voici un exemple sur la façon de télécharger une pièce jointe à l'aide de CURL (http://guide.couchdb.org/draft/api.html#attachlements): Et voici l'API officielle des pièces jointes: http://wiki.apache.org/couchdb/http_document_api#tandalone_attacchments < / a> p> curl -v -x mettre http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689 - Data-Binary @ Artwork.jpg -h "Type de contenu: Image / JPG" Code> P>
Donc, j'ai d'abord besoin de créer le document, d'obtenir un _rev, puis d'utiliser placer enfin attacher une image? Pourquoi n'est-il pas possible de le faire simultanément? Et si les informations que je souhaite saisir proviennent d'un formulaire d'inscription, où l'utilisateur a la possibilité de télécharger une ou plusieurs images? Comment allais-je faire cela?
Si vous recherchez un stockage très évolutif pour des objets binaires qui écrivent dans quelque chose comme un seau simultanément, CouchDB peut ne pas être votre premier choix. Il reste encore plusieurs solutions de contournement pour votre problème: stockez des copies locales des images téléchargées localement et la file d'attente pour le téléchargement séquentiel. Alternativement, stockez chaque image dans un document distinct (permet de télécharger parallèle) et n'ajoutez que les identifiants des documents d'image dans votre document utilisateur. Pour tout faire dans une demande: base64-encoder vos images et les inclure à votre document JSON (laid en termes de performance).
Si vous obtenez une erreur: "Pas de matchs trouvés: ..." Mettez l'URL dans les citations: Curl -V -X Mettez ' 127.0.0.1:5984/ALBUMS/6E1295ED6C29495E54CC05947F18C8F05947F18C8Af/... '--Data-binary @ Artwork.jpg -h" Type de contenu: image / jpg "
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)'" } } }'
Cela fonctionne pour moi et semble un peu plus simple. Le premier doit être lors de la création du doc, si vous n'ajoutez pas de REV. Mes exemples utilisent 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"}