【问题标题】:How do I bulk upload Couchdb attachments?如何批量上传 Couchdb 附件?
【发布时间】:2011-12-16 21:02:10
【问题描述】:

我正在将我的 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 应用程序。

【问题讨论】:

    标签: rest couchdb attachment appcelerator bulk


    【解决方案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] }},
      ]
    }
    

    但是,根据附件的数量和大小,您可能会遇到问题。简单地循环并一次做一个可能会更好;或至少在合理大小的批次中。

    【讨论】:

      【解决方案2】:

      一个简单的解决方法..先将所有数据导出到 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 文件中。

      这种方法对我来说完美无缺,尽管有 380 个文档,但图像的大小约为 60-65kb。不确定大文件会发生什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2011-04-17
        • 2016-10-24
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多