【问题标题】:PouchDB <input type="file" multiple /> - can this work? How?PouchDB <input type="file" multiple /> - 这行得通吗?如何?
【发布时间】:2017-06-23 02:16:29
【问题描述】:

我有一个 webapp/Cordova 应用程序,它有一个基本的表单来填写,然后将数据同步到 CouchDB。一切正常,除了我无法让 PouchDB 接受用户从表单提供的多个文件(图像)附件。我已阅读并尝试使用有关 putAttachment 的 PouchDB 文档中的示例,但找不到任何示例说明如何使用 putAttachement 将用户输入附件从以下内容中放置:

<input type="file" id="attachment" name="attachment" multiple />

我无法弄清楚如何获取所有图像输入并通过 PouchDB 将 (putAttachment) 发送到 CouchdB。工作 Plnkr 在这里:http://plnkr.co/edit/fKxazltC6WftptKEAR5T?p=info

local.put(mileageDoc, function(err, response) {
  if (err) {
    return console.log(err);
  } else {
    for (var i = 0; i < storedFiles.length; i++) {
      local.putAttachment(response.id, storedFiles[i].name, response.rev, storedFiles[i], storedFiles[i].type, function(err, response){
        if (err) {
          return console.log(err);
        } else {
          console.log("Document created Successfully");
          console.log("response id:" + response.id);
          console.log("response id:" + response.rev);
          console.log("storedFiles length:" + storedFiles.length);
        }
      });
    }
    clearFields();
  }
});

有人建议使用递归,但我真的很难弄清楚如何使它工作。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 知道了。 “编辑”注释说 37 个字符已更改,所以我认为有一些小的代码修复。 ;).
  • 好点...不知道为什么这么说。

标签: pouchdb


【解决方案1】:

您可以使用 blob 库并循环放置图像一次。

【讨论】:

  • 在阅读了文档并查看了示例代码之后,我感到很困惑。使用 PouchDB 文章 (pouchdb.com/2014/06/17/…) 第 6 篇关于更好代码的 12 个专业提示说:“不要只是为了它而更新文档。每次修改文档时,都会在其修订历史中添加另一个修订 - 想想 Git . 除了与 Git 不同,这些修订包含完整的文档数据(不仅仅是差异),这可能会占用大量磁盘空间。因此,如果文档中没有任何变化,请不要再费心 put()ing 它。循环将强制每个循环使用 put()。
  • 我取得了一些进展,因为我有一个循环并且加载了多个文件中的第一个。但是我显然没有正确编码以在每次循环结束时拉出当前的 _rev,因此只有第一个附件通过。我在这里的 Plnkr 上有它:link 有人建议使用递归而不是循环 - 但我不知道如何。找到后我会发布解决方案,因为我确信其他人会在某些时候想要使用 &lt;input type='file' multiple&gt;
猜你喜欢
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2011-03-27
  • 2013-12-31
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多