我如何批量上传Couchdb附件



我正在将我的sqlite数据库转换为Couchdb。我可以转换数据库并上传到Couchdb服务器。除了图像之外的一切。我想上传图像作为独立附件,我想使用javascript, REST和xhr批量完成此操作。

POST http://127.0.0.1:5984/database/_bulk_docs
Data : {"_id": "701", "_attachments": {"555_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile]      }}}

我已经卷曲了一个文件来测试,这是有效的。我怎么做散装货?

这是一个使用Appcelerator Titanium开发的iOS应用程序。

您应该能够调整您的单个文件,并做如下操作:

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] }},
  ]
}

但是,根据附件的数量和大小,您可能会遇到问题。简单地循环并一次执行一个可能会更好;

一个简单的工作…首先导出所有数据到excel。然后创建一个列,其中包含执行每个文档的curl语句所需的确切url(在excel中,每个文档都有行)。简单的curl语句来执行图片上传:

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

在构建curl所需的单个url之后(这在excel中非常容易),将构建的url的整个列复制到文本文件中,并将文本文件放置在要上传的图像所在的位置。然后创建一个bash脚本,它将读取所有行并继续将图像发布到couchdb服务器:bash脚本

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

在我的例子中,所有的url行都在test.txt文件中。

这种方法对我来说是完美的,图像的大小大约是60-65kb,尽管有380个文档。不知道大文件会怎么样

相关内容

  • 没有找到相关文章

最新更新