2012-03-05 17 views
3

私はアプリケーションのようなCMSを作成しています。私のイメージをcouchdbの添付ファイルとして保存したいと思います。 画像の名前を同じにしたくないため添付ファイルに名前を付けることに問題があります(例:/db/doc_id/thumb.jpg)couchdb、添付ファイルの名前を変更する方法

添付ファイルの名前はdoc.nameフィールドに依存するのが理想的です。この作業をするには、ユーザーが現在の写真ドキュメントの名前(説明| alt)を変更するたびに添付ファイルの名前を変更する必要があります。

私の質問は:添付ファイル名を変更する方法ですか?または私は私の問題を解決するには別の方法を行く必要がありますか?

答えて

2

のSzymon、

私は文書名にUUIDを使用して検討し、「オリジナル」、「親指」のようなもの「静的」として添付ファイルを保存することをお勧めしたい

「300wide」などがあります。ユーザーがファイルをアップロードするときにユーザーから与えられた名前はキーとして保存でき、後でその名前を使用してMapReduceインデックスを使用してイメージ/ファイルを取得できます。

もしあなたがそのルートに行くなら、あなたは同じ重複した人の名前で同じ画像を複数回簡単にアップロードすることができるので、ちょっと違った問題になるでしょう。紛争はない。

あなたが構築しているものによっては、ユーザーに一意の名前を付けることは一般的に賢明ではありません。たとえば、Flickr(他の多くの人)はそうではありません。

doc_id ==ユーザーが指定した名前を本当に作成する必要がある場合は、添付ファイル名を静的な名前で保存するのが賢明です。そのため、添付ファイル名を更新する必要はありません。

最後に、添付ファイルの名前を変更する必要があると感じる場合は、最も簡単な方法は、以前の場所(またはドキュメント)から添付ファイルを取得し、新しい名前、古い名前の添付ファイルを削除します。

希望に役立ちます!

+0

GET/PUT/DELETEシーケンスでは添付ファイルのMIMEタイプが必要ですかPUT?どうすればそれを得ることができますか? (私が知っている唯一の方法は、ドキュメントを取得し、_attachmentsフィールドの添付ファイルスタブのプロパティを見ることですが、添付ファイルが多い場合はあまりにもオーバーヘッドのようです) –

+0

添付ファイルの名前が分かっている場合HEADリクエストを使用してMIMEタイプを取得することができます。そうでない場合は、MapReduceを使用してすべての_attachmentsとそのMIMEタイプのインデックスを作成できます。次に、その結​​果をGET/PUT/DELETE実行の基礎として使用します。 – BigBlueHat

0

このコマンドを使用して>

curl -v http://localhost:5984/database/DocumentID/OldFileName?rev=RevisionID -X MOVE -H "Destination: NewFileName" 
+1

MOVEは簡単にCouchDBでサポートされ、0.9がリリースされる前に削除されました:http://wiki.apache.org/couchdb/HTTP_Document_API#MOVE – BigBlueHat

関連する問題