Создание отдельного вложения couchdb с помощью cURL - PullRequest
7 голосов
/ 17 сентября 2009

Я сейчас играю с couchdb и тестирую функцию «автономных вложений», которая описана в нижней части этой страницы .

Я пытаюсь использовать функцию curl --data-urlencode для отправки запроса на создание, который работает только наполовину. Я могу создать вложение и получить его, но поле Content-Type неверно, поэтому изображение не будет отображаться правильно.

Чтобы быть более точным, CouchDB, кажется, работает, возвращая вложение, используя тот же Content-Type, в котором оно было опубликовано. (Что совершенно разумно IMO) Моя проблема в том, что curl не отправляет правильный код. Вот подробности;

 curl -vX PUT http://localhost:5984/dafttest/666/attachment --data-urlencode image/jpeg@xi_on_beach.jpg
* About to connect() to localhost port 5984 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 5984 (#0)
> PUT /dafttest/666/attachment HTTP/1.1
> User-Agent: curl/7.19.4 (x86_64-pc-linux-gnu) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
> Host: localhost:5984
> Accept: */*
> Content-Length: 495389
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>

Итак, краткая версия этого вопроса: как получить cURL для отправки правильного Content-Type?

EDIT:

Я сообщаю, что моей другой ошибкой было использование --data-urlencode, когда чтобы заставить его работать, мне нужно использовать --data binary @filename вместе с опцией -H, которую предложил Дейл.

1 Ответ

5 голосов
/ 17 сентября 2009

Вы можете добавить заголовки с помощью переключателя заголовка -H / - , поэтому, чтобы добавить заголовок для типа содержимого image / jpeg, добавьте его в свою команду:

-H "Тип контента: изображение / JPEG"

...