如何使用Curl在CouchDB中为文档添加独立附件?

时间:2014-08-07 20:14:11

标签: curl couchdb

我在Linux上使用CouchDB 1.5.1。在尝试在libCurl中实现之前,我尝试使用curl执行此操作。我想添加一个文档,然后在单独的调用中将附件(独立)添加到同一文档。我可以成功地将文档添加到CouchDB,如下所示:

curl -X PUT 'http://admin:secret@localhost:5984/mydb/mydoc' 
    -H 'Content-Type: application/json' -d '{  
        "name":"john",
        "last":"doe",
        "age":"30"
    }'

我遇到的问题是在添加文档后添加附件。如果我理解正确,我必须修改文档以添加附件。此外,似乎任何事情都不在' _attachments'必须是base64编码。 base64似乎也有助于包含新行和回车的文档,所以我考虑在base64中编码我的所有文档,包括文本和二进制文件。我也意识到我可以使用base64 cmd。我一直在尝试以下内容:

curl -X POST 'http://admin:secret@localhost:5984/mydb/mydoc?rev=3-a0241af37764c0389eb0d3c0a9a6540d'  
    -H 'Content-Type: application/json' -d '{
        "_attachments": {
            "testfile.txt": {
                "content-type":"text/plain", 
                "data":"'$(openssl base64 < ./testfile)'" 
            } 
        } 
    }'

目前,我收到了很多以下错误......错误。

curl: (6) Could not resolve host: b3IgaW1wbGVtZW50CiAgICAgdGhlbSB5b3Vyc2VsZi4KCiAgQ1VSTE9QVF9XUklU  

1 个答案:

答案 0 :(得分:1)

非常接近!您只需要在shell命令的输出周围添加双引号,以便将其视为字符串。

curl -X POST 'http://admin:secret@localhost:5984/mydb/mydoc?rev=3-a0241af37764c0389eb0d3c0a9a6540d'  
-H 'Content-Type: application/json' -d '{
    "_attachments": {
        "testfile.txt": {
            "content-type":"text/plain", 
            "data":"'"$(openssl base64 < ./testfile)"'" 
        } 
    } 
}'