2012-03-01 16 views
1

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

Я начал с создания новой базы данных с именем 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 

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

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

+0

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

+0

Спасибо, я выяснил, что несколько минут назад. Я отправлю ответ, чтобы помочь другим в будущем. – karlphillip

ответ

0

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

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

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

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

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

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" 
Смежные вопросы