javascript - 将文件上传到 PouchDB/CouchDB

标签 javascript cordova file-upload couchdb pouchdb

我正在使用 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 的链接,其中我将尝试添加文件上传。我还包含了 html 部分。

链接到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 .

关于javascript - 将文件上传到 PouchDB/CouchDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276465/

相关文章:

javascript - 使用基于实例的装饰器发布订阅者模式 'this' 始终未定义

javascript - 如何将转换添加到 Javascript document.getElementById ("myDIV").style.display = "none";

javascript - 如何从 javascript 函数内部调用 jquery 按钮单击函数

android - PhoneGap Android childbrowser 问题 - childbrowser.java 中的大写 C?

c# - UploadFile 控件 - 获取数据

php - 使用 php 在其他站点上运行 javascript

android - 如何在 32 位 Linux 上为 Android 开发

javascript - 获取的数据未显示在新页面上(JavaScript/HTML)

php - 如何更改 Web 服务器上的 FcgidMaxRequestLen?

python - Django:将上传文件中的文本写入文本字段