2011-12-16 3 views
4

私はsqliteデータベースをCouchdbに変換しています。 dbを変換してCouchdbサーバーにアップロードできます。イメージ以外のすべて。スタンドアロンの添付ファイルとして画像をアップロードしたいのですが、javascript、REST、xhrを使用して一括して行いたいと思います。Couchdb添付ファイルを一括アップロードするにはどうすればよいですか?

POST http://127.0.0.1:5984/database/_bulk_docs 

Data : {"_id": "701", "_attachments": {"555_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile]  }}} 

私はテストする1つのファイルをCURLしています。一括処理はどうすればいいですか?

これはAppcelerator Titaniumで開発されたiOSアプリです。

答えて

1

あなたは、単一のファイルを調整することができ、かつ、次のような何かを行う必要があります。

POST http://127.0.0.1:5984/database/_bulk_docs 

データビーイングと:

{ 
    "docs": [ 
    {"_id": "701", "_attachments": {"555_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }}, 
    {"_id": "702", "_attachments": {"556_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }}, 
    {"_id": "703", "_attachments": {"557_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }}, 
    ] 
} 

ただし、添付ファイルの数とサイズに応じて、問題が発生する可能性があります。一度に1つずつループして実行する方が良いかもしれません。または少なくとも合理的なサイズのバッチであってもよい。

0

単純な回避策...すべてのデータを最初にExcelにエクスポートします。次に、すべてのドキュメントのcurlステートメントを実行するために必要な正確なURLを持つ列を作成します(すべてのドキュメントの行があります)。 シンプルなカール文は、画像のアップロードを実行するには:

curl -v -X PUT "http://username:[email protected]:portno/dbname/doc_id/image.JPG?rev=revisionid" --data-binary @image.JPG -H "Content-Type:image/jpg" 

、Excelでかなり容易ではテキストファイルで築き上げたURLの列全体をコピーしてテキストを配置しますカールのために必要な個々のURLを、構築した後、アップロードされる画像が存在するファイル。その後、すべての行を読み、CouchDBのサーバーに画像を投稿し続けますためにどのbashスクリプトを作成します。 bashスクリプト

#!/bin/bash 
while read line 
do 
     curl -v -X PUT $line 
done < test.txt 

私の場合は、すべてのURLラインがあるtest.txtファイル内に存在しています。

この方法は、画像のサイズは約380〜380kbですが、完璧に機能しています。大きなファイルで何が起こるのかはっきりしない。