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 に答える