如何使用nedb发送图像文件

问题描述 投票:0回答:1

我使用nedb

我如何上传图片?

我正在尝试这段代码。

但是,没有保存的证据。

const Nedb = require('nedb');
const path = require('path');
const { remote } = require('electron');

const dbPath = remote.app.getPath('userData');
const users = new Nedb({
  autoload: true,
  filename: path.join(dbPath, 'users.db'),
});

// upload something image file.
document.querySelector('input[type=file]').addEventListener('change', (evt) => {
  const file = evt.target.files[0];

  users.insert(file, (err, docs) => {
    console.log(docs); // `{"_id": "hash value"}` only data
  });

});

我想保存二进制数据。

请告诉我用nedb上传图片。

javascript browser electron nedb
1个回答
1
投票

因为我的解决方案是你无法直接存储,但你可以做的是首先使用你能找到的任何库将图像转换为字符串或base64字符串,但它会根据图像类型和质量生成一个非常长的字符串。

我使用了本机JavaSCript提供的FileReader API:

 const fileReader = new FileReader();
    fileReader.addEventListener('load', e => {

                   let  imageStrings = (e.target.result);

                });
   fileReader.readAsDataURL(file);

因此,当您将此发送到Express或任何Web服务器时,您会发现它会在客户端的终端或控制台中导致大小错误消息或发布413 Payload错误消息,因此如果您使用快速,那么您可以调整JSON限制和编码参数。即使您保存图像字符串,在nedb文件中看起来也很难看(但至少它现在起作用了。)

另一个选择是考虑在GitHub页面或https://github.com/louischatriot/nedb/issues/38上的这个帖子上说了什么。这个链接他们谈论将文件上传到你的文件系统并将其存储在别处,并在你的nedb数据库中对它进行数据库引用。

如果您能找到或找到任何可行的解决方案,请添加解决方案

© www.soinside.com 2019 - 2024. All rights reserved.