1

我可以在不重新上传现有文档的情况下更新它们的附件吗?

我试过:

<?php
    $json = '
    {
        "_id":"attachment_doc",
        "_rev":'.$rev.',
        "_attachments":
        {
            "free-wallpaper-31.jpg":
            {
                "revpos":3,
                "content_type":"image\/jpeg",
                "data": "'.base64_encode(file_get_contents('free-wallpaper-31.jpg')).'"
            }
        }
    }
';

$doc = $couchdb->doc_upload_attachments('16beb67b990604791b3ffde7dd000576', $json);
var_dump($doc);
?>

但这会覆盖现有附件并使用新修订存储文档。

4

1 回答 1

4

我不熟悉 PHP 的 API,但通常在 CouchDB REST API 中,您可以上传附件,而无需上传文档和其他以前上传的附件。查看The Definite Guide中 API 章节的附件部分。在命令行中:

curl -vX PUT http://localhost:5984/YOUR_DB/YOUR_DOCUMENT/YOUR_ATTACHMENT.jpg?rev=REVISION_OF_THE_DOCUMENT_BEFORE_UPLOADING_AN_ATTACHMENT --data-binary @FILE_ON_THE_DISK.JPG -H "Content-Type: image/jpg"

它对我有用 :) 是的,上传成功时必须更改文档的修订版。如果您在使用您的语言的绑定上传时遇到问题,只需使用标准 HTTP API 上传即可。

于 2012-10-03T19:16:50.667 回答