You can upload a document and all its attachments in one PUT request if you use multipart/related, yes. Check the test suite for a working example.
B. On 16 July 2013 21:19, Robert Newson <[email protected]> wrote: > I think the error message is very descriptive and tells you exactly what to > do. > > B. > > > On 16 July 2013 20:38, Yves S. Garret <[email protected]> wrote: >> On Tue, Jul 16, 2013 at 3:22 PM, Yves S. Garret >> <[email protected]>wrote: >> >>> On Tue, Jul 16, 2013 at 1:34 PM, Yves S. Garret < >>> [email protected]> wrote: >>> >>>> On Tue, Jul 16, 2013 at 1:12 PM, Robert Newson <[email protected]>wrote: >>>> >>>>> You need to pass the current rev, which clearly doesn't match the one >>>>> you tried and got the 409 conflict telling you it was wrong for. >>>>> >>>>> On 16 July 2013 18:07, Yves S. Garret <[email protected]> >>>>> wrote: >>>>> > On Tue, Jul 16, 2013 at 11:39 AM, Yves S. Garret >>>>> > <[email protected]> wrote: >>>>> >> >>>>> >> On Tue, Jul 16, 2013 at 11:13 AM, Tim Tisdall <[email protected]> >>>>> wrote: >>>>> >>> >>>>> >>> Do you have a space before "--data-binary" when you run the command? >>>>> >>> >>>>> >>> >>>>> >>> On Tue, Jul 16, 2013 at 11:05 AM, Yves S. Garret >>>>> >>> <[email protected] >>>>> >>> > wrote: >>>>> >>> >>>>> >>> > I'm going through this book and I'm in this section: >>>>> >>> > http://guide.couchdb.org/editions/1/en/api.html#attachments >>>>> >>> > >>>>> >>> > I try this in the command line and this is the error that I get: >>>>> >>> > % curl -vX PUT >>>>> >>> > >>>>> >>> > >>>>> >>> > >>>>> http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689--data-binary >>>>> >>> > @artwork.jpg -H "Content-Type: image/jpg" >>>>> >>> > zsh: no matches found: >>>>> >>> > >>>>> >>> > >>>>> >>> > >>>>> http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689 >>>>> >>> > >>>>> >>> > Am I making a stupid copy/paste mistake that's not immediately >>>>> >>> > obvious? There is an artwork.jpg in the directory that I'm working >>>>> >>> > in. >>>>> >>> > >>>>> >> >>>>> >> >>>>> >> Yes. >>>>> > >>>>> > >>>>> > This is what's in the database at the moment (if it helps): >>>>> > >>>>> > { >>>>> > "_id": "6e1295ed6c29495e54cc05947f18c8af", >>>>> > "_rev": "1-4b39c2971c9ad54cb37e08fa02fec636", >>>>> > "title": "There is Nothing Left to Lose", >>>>> > "artist": "Foo Fighters" >>>>> > } >>>>> > >>>>> > >>>>> > And I've attached the file with the actual DB. >>>>> >>>> >>>> Gotcha. It worked. Thanks. >>>> >>> >>> One more question, would it be possible to include multiple binary >>> uploaded files? >>> >>> This is what I tried and the results that I got: >>> >>> % curl -vX PUT " >>> http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-5ba0d72de94d89056e1f91ec900f5680" >>> --data-binary @artwork.jpg --data-binary @sample2.jpg -H "Content-Type: >>> image/jpg" >>> * About to connect() to 127.0.0.1 port 5984 (#0) >>> * Trying 127.0.0.1... >>> * Adding handle: conn: 0x7fe5c4007c00 >>> * Adding handle: send: 0 >>> * Adding handle: recv: 0 >>> * Curl_addHandleToPipeline: length: 1 >>> * - Conn 0 (0x7fe5c4007c00) send_pipe: 1, recv_pipe: 0 >>> * Connected to 127.0.0.1 (127.0.0.1) port 5984 (#0) >>> > PUT >>> /albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-5ba0d72de94d89056e1f91ec900f5680 >>> HTTP/1.1 >>> > User-Agent: curl/7.31.0 >>> > Host: 127.0.0.1:5984 >>> > Accept: */* >>> > Content-Type: image/jpg >>> > Content-Length: 161673 >>> > Expect: 100-continue >>> > >>> < HTTP/1.1 100 Continue >>> < HTTP/1.1 409 Conflict >>> * Server CouchDB/1.3.1 (Erlang OTP/R16B01) is not blacklisted >>> < Server: CouchDB/1.3.1 (Erlang OTP/R16B01) >>> < Date: Tue, 16 Jul 2013 19:19:45 GMT >>> < Content-Type: text/plain; charset=utf-8 >>> < Content-Length: 58 >>> < Cache-Control: must-revalidate >>> * HTTP error before end of send, stop sending >>> < >>> {"error":"conflict","reason":"Document update conflict."} >>> * Closing connection 0 >>> >>> This is the current record: >>> >>> { >>> "_id": "6e1295ed6c29495e54cc05947f18c8af", >>> "_rev": "2-5ba0d72de94d89056e1f91ec900f5680", >>> "title": "There is Nothing Left to Lose", >>> "artist": "Foo Fighters", >>> "_attachments": { >>> "artwork.jpg": { >>> "content_type": "image/jpg", >>> "revpos": 2, >>> "digest": "md5-dqqlZ2iJ4Mw9C6SNf7r+Pw==", >>> "length": 15138, >>> "stub": true >>> } >>> } >>> } >>> >> >> This is off-topic, but when I tried to setup a replication DB, this is the >> error that I got: >> >> % curl -X PUT http://127.0.0.1:5984/albums-replica >> {"ok":true} >> % curl -vX POST http://127.0.0.1:5984/_replicate -d '{"source":"albums", >> "target":"albums-replica"}' >> * About to connect() to 127.0.0.1 port 5984 (#0) >> * Trying 127.0.0.1... >> * Adding handle: conn: 0x7fb592808c00 >> * Adding handle: send: 0 >> * Adding handle: recv: 0 >> * Curl_addHandleToPipeline: length: 1 >> * - Conn 0 (0x7fb592808c00) send_pipe: 1, recv_pipe: 0 >> * Connected to 127.0.0.1 (127.0.0.1) port 5984 (#0) >>> POST /_replicate HTTP/1.1 >>> User-Agent: curl/7.31.0 >>> Host: 127.0.0.1:5984 >>> Accept: */* >>> Content-Length: 46 >>> Content-Type: application/x-www-form-urlencoded >>> >> * upload completely sent off: 46 out of 46 bytes >> < HTTP/1.1 415 Unsupported Media Type >> * Server CouchDB/1.3.1 (Erlang OTP/R16B01) is not blacklisted >> < Server: CouchDB/1.3.1 (Erlang OTP/R16B01) >> < Date: Tue, 16 Jul 2013 19:23:34 GMT >> < Content-Type: text/plain; charset=utf-8 >> < Content-Length: 78 >> < Cache-Control: must-revalidate >> < >> {"error":"bad_content_type","reason":"Content-Type must be >> application/json"} >> >> Thoughts? >> >> But also, is there an index of general CouchDB errors that I can refer to >> and find >> out the general causes behind those errors?
