我使用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。
发布于 2019-03-16 15:48:58
因为我的解决方案是您不能直接存储,但您可以做的是首先使用您可以找到的任何库将映像转换为字符串或base64字符串,但是它将生成一个非常长的字符串,这取决于图像类型和质量。
我使用了本机FileReader提供的JavaSCript API:
const fileReader = new FileReader();
fileReader.addEventListener('load', e => {
let imageStrings = (e.target.result);
});
fileReader.readAsDataURL(file);因此,当您将其发送到Express或任何web服务器时,您会发现它会在客户端或控制台中导致大小错误消息或Post 413 Payload错误消息,因此如果您使用的是express,那么您可以调优JSON限制和编码参数。即使您保存了图像字符串,在nedb文件中看到它也会很难看(但是它至少现在起作用了)。
另一种选择是考虑在GitHub页面上的这个线程或https://github.com/louischatriot/nedb/issues/38 (这个链接)上说了什么--他们谈到将文件上传到文件系统并将其存储到其他地方,并在您的nedb数据库中对其进行数据库引用。
如果您能找到或有人找到一个可行的解决方案,那么请添加一个解决方案。
https://stackoverflow.com/questions/50460038
复制相似问题