【问题标题】:Uploading, storing and displaying image via nodejs and mongodb?通过 nodejs 和 mongodb 上传、存储和显示图像?
【发布时间】:2017-10-22 03:13:28
【问题描述】:

如何通过nodejsmongodb 创建网络画廊并上传、存储和显示图像?

我尝试自己编写一些代码,但无法解决问题。

有人有帮助我解决问题的链接或教程吗?

【问题讨论】:

  • 我不使用 Node.js,但可以通过将文件的 Base64 编码存储在字段(文件大小 16MB)。由于图像很可能小于 16MB,因此您只需要 Node.js 应用程序来读取文件并将 byte[] 写入 base64 编码的字符串对象(来自 Java POV)。见stackoverflow.com/questions/28834835/readfile-in-base64-nodejs

标签: node.js mongodb


【解决方案1】:

不建议将整个图像存储在数据库中。可以这样做,但基于堆栈溢出的类似问题,最好将图像存储在文件系统上。这可以通过使用multerfs模块来处理上传并将其存储在文件系统中来完成。您甚至可以使用图像处理器来确认上传的内容确实是图像而不是其他图像。我建议使用 npm 上的 sharp 模块来执行此操作。这样您就可以确定不会出错,您甚至可以在存储之前调整图像大小。下面是一些使用 express.js 的代码:

    var multer = require('multer');
    var uploadPicture = multer({
    dest: 'temp/'
    });
    var sharp = require('sharp');

    app.post('/upload', uploadPicture.single('profileIcon'), function (req,res) {
      fs.readFile(req.file.path, function (err, data) {
        if (err) res.end('UNRESOLVABLE ERROR');
    sharp(data).resize(200, 200).toFile('./photos/pic.jpg', function (err, info) {
    //DELETE THE TEMPORAL FILE
            fs.unlink(req.file.path, function (error) {
                if (error) res.end('UNRESOLVABLE ERROR'); //CODE 3 ALARM
                res.end('success');
            });
    }

【讨论】:

  • It is not recommended to store whole images on databases。我不同意。这主要是传统的关系数据库管理系统的问题。在 MongoDB 中存储二进制文件根本不成问题。它甚至特别为您提供了通过 GridFS 执行此操作的机会(对于较大的文件)
  • 这是有道理的。我一直使用关系数据库,这就是我阅读它的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 2012-04-28
  • 2016-12-24
  • 2018-04-12
  • 2018-10-10
  • 2011-09-15
  • 2015-10-21
相关资源
最近更新 更多