上传和存储图像

新手上路,请多包涵

是的,我知道 使用 Node.js、Express 和 Mongoose 上传图像 以及 如何使用 node.js 在 mongodb 中存储图像? 但解决这些问题并不是我想要实现的。我希望能够使用 Schema 将图像存储在二进制数据库中(Mongodb with Mongoose)。

那么,您知道使用组合 Node.js、Express 和 Mongodb 的任何应用程序吗?如果这个组合 + Jade 有任何应用程序是最好的,但我想这要求太多了。

提前致谢!

原文由 holyredbeard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 349
1 个回答

可以在 NodeJS 和猫鼬中使用多种方法来存储图像,但我发现 multer 特别有趣。您可以使用 multer 轻松存储图像和视频,但请记住,MongoDB 中的最大文件大小为每个文件 25 MB。要存储更大的文件,您可以使用 FOLDER 而不是 MongoDB 数据库。下面是存储图片的例子:

注意: 图片大小必须小于25MB

索引.js

 const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const multer = require("multer");

const app = express();
const port = 5000;

app.use(bodyParser.urlencoded({ extended: false }));

// IMPORTING SCHEMA
const ImageModel = require("./schema/imageModel");

// CONFIG
const ImageUpload = multer({
  limits: {
    fileSize: 1000000
  },
  fileFilter(req, file, cb) {
    if (!file.originalname.match(/\.(jpg|png|JPG|PNG|JPEG|jpeg)$/))
      return cb(new Error("This is not a correct format of the file"));
    cb(undefined, true);
  }
});

// ROUTE
app.post("/api/image", ImageUpload.single("image"), (req, res) => {
  const Image = req.file.buffer;
  const ID = uuidv4();
  const ImageData = new ImageModel({ ID, Image });
  ImageData.save((err, noerr) => {
    if (noerr) {
      res.sendStatus(200);
    }
  });
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

查看此存储库以获取更多信息。

模式或图像模型

const mongoose = require('mongoose');
const ImageSchema = new mongoose.Schema({
    Image:{
        type:Buffer,
        required:true,
    },
    ID:{
        type:String,
        required:true
    }
});
const ImageModel = mongoose.model('Image',ImageSchema);
module.exports = ImageModel;

原文由 porosh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题