正在将文件上传到 PouchDB/CouchDB

Uploading file to PouchDB/CouchDB

我正在使用 Cordova 构建移动应用程序。我将 PouchDB 用于本地存储,因此该应用程序可以在没有互联网的情况下运行。 PouchDB 与 CouchDB 服务器同步,因此您可以随时随地访问您的数据。

现在,我已经到了需要添加将(多个)文件上传到文档的功能的地步。 (文件如 .png .jpg .mp3 .mp4 所有可能的文件类型)。

我没有文件上传的原始代码:

 locallp = new PouchDB('hbdblplocal-'+loggedHex);
function addItem() {
    //get info
    var itemTitle = document.getElementById('itemTitle').value;
    var itemDesc = document.getElementById('itemDesc').value;
    var itemDate = document.getElementById('itemDate').value;
    var itemTime = document.getElementById('itemTime').value;

    //get correct database
    console.log(loggedHex);
    console.log(loggedInUsername);

    //add item to database
    var additem = {
    _id: new Date().toISOString(),
        title: itemTitle,
        description: itemDesc,
        date: itemDate,
        time: itemTime
    };
    locallp.put(additem).then(function (result){
        console.log("Added to the database");
        location.href = "listfunction.html";
    }).catch(function (err){
        console.log("someting bad happened!");
        console.log(err);
    });
}

我将向 JSfiddle 添加一个 link,我会在其中展示我尝试添加文件上传的尝试。我还包括了 html 部分。

link 到 jsfiddle:click here

我注意到控制台中存在关于没有内容类型的错误。

有没有人可以帮助我?

我认为您没有正确设置附件的 content_type。尝试将 type 更改为 content_type,如下所示:

var additem = {
    _id: new Date().toISOString(),
    title: itemTitle,
    description: itemDesc,
    date: itemDate,
    time: itemTime,
    _attachments: {
      "file": {
        content_type: getFile.type,
        data: getFile
      }
    }
  };

另见 docs for working with attachments