2009-09-17 3 views
7

Ich spiele gerade mit couchdb und teste die "Standalone Attachments" -Funktion, die im unteren Bereich von this page beschrieben wird.Erstellen einer couchdb-Standalone-Anlage mit cURL

Ich versuche, curl --data-urlencode-Funktion zu verwenden, um die Erstellungsanfrage zu senden, die nur halb funktioniert. Ich kann den Anhang erstellen und abrufen, aber das Feld Inhaltstyp ist falsch, daher wird das Bild nicht korrekt angezeigt.

Um genauer zu sein, scheint CouchDB zu funktionieren, indem es den Anhang mit dem selben Inhaltstyp zurückgibt, in dem es gepostet wurde (was vollkommen vernünftig ist IMO) Mein Problem ist, dass curl nicht den richtigen Code sendet. Hier sind die Details;

curl -vX PUT http://localhost:5984/dafttest/666/attachment --data-urlencode image/[email protected]_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 
> 

Also die kurze Version dieser Frage ist; Wie bekomme ich cURL, um den richtigen Content-Type zu senden?

EDIT:

Ich befreie, dass meine andere Fehler --data-urlencode zu verwenden waren, wenn es an der Arbeit ich --data binären @filename zusammen mit der Option -H, die Dale vorgeschlagen verwenden muß .

Antwort

5

Sie add headers with the -H/--header switch können, so ein Header für image/jpeg Inhaltstyp hinzufügen möchten, fügen Sie diese zu Ihrem Befehl:

-H "Content-Type: image/jpeg"

+0

ich auch benötigt --data-binary @filename nicht --data-urlencodiert, Ich habe meinen Post bearbeitet, falls jemand anderes dazu kommt. –