Загрузка файла XML в CouchDB через CURL через командную строку - PullRequest
1 голос
/ 01 марта 2012

Я не могу отправить файл XML с именем filesystem.xml в CouchDB, используя curl в строке cmd.

Я начал с создания новой базы данных с именем my_db :

curl -X PUT http://127.0.0.1:5984/my_db
{"ok":true}

и я пробовал несколько способов загрузить документ XML в эту базу данных, в том числе:

curl -vX POST http://127.0.0.1:5984/my_db -H "Content-Type: text/xml" -d @filesystem.xml

который выводит:

* About to connect() to 127.0.0.1 port 5984 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 5984 (#0)
> POST /my_db HTTP/1.1
> User-Agent: curl/7.21.0 (i386-redhat-linux-gnu) libcurl/7.21.0 NSS/3.12.10.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4
> Host: 127.0.0.1:5984
> Accept: */*
> Content-Type: text/xml
> Content-Length: 3091
> Expect: 100-continue
> 
< HTTP/1.1 415 Unsupported Media Type
< Server: CouchDB/1.0.2 (Erlang OTP/R14B)
< Date: Thu, 01 Mar 2012 16:18:14 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"}
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0

В ответе сервера указано HTTP/1.1 415 Unsupported Media Type, что указывает на проблему. Как мне это исправить?

Я только недавно начал играть с CouchDB и curl, так что я знаю, что мне не хватает чего-то очевидного. Не стесняйтесь разработать свой ответ для этого новичка.

1 Ответ

0 голосов
/ 01 марта 2012

Я обнаружил, что вы не можете загрузить файл напрямую в базу данных. Файлы могут быть сохранены только в том случае, если вы прикрепите их к существующему документу в базе данных.

Следующая инструкция демонстрирует, что я пытался сделать.

1) Создать фиктивный документ:

curl -X POST http://localhost:5984/my_db -H "Content-Type: application/json" -d {}
{"ok":true,"id":"4f674a5b32bbd4e0a97f00817b0006d1","rev":"1-967a00dff5e02add41819138abb3284d"}

2) Загрузить файл XML . Для этого вам понадобятся значения id и revision , которые были возвращены предыдущей командой:

curl -X PUT http://127.0.0.1:5984/my_db/4f674a5b32bbd4e0a97f00817b0006d1/attachment?rev=1-967a00dff5e02add41819138abb3284 --data-binary @filesystem.xml -H "Content-Type: text/xml"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...