【问题标题】:Retrieving images stored in mongodb检索存储在 mongodb 中的图像
【发布时间】:2017-09-04 23:04:06
【问题描述】:

我试图检索我上传并保存到 mongodb 的图像,但我没有 能够直接从数据库检索图像。好像有很多信息 上传文件,但没有很多关于检索的信息 从数据库上传的图像。

非常感谢您的帮助。提前致谢。

这是保存在 mongodb 中的部分内容:

{
    "_id": {
        "$oid": "58f2e56fd8ca891e02fc85db"
    },
    "path": "uploads/1492313455338_codi.jpg",
    "filename": "1492313455338_codi.jpg",
    "__v": 0,
    "article": {
        "$oid": "58f2e56fd8ca891e02fc85dc"
    }
}

架构:

var mongoose = require('mongoose');

var ImageSchema = new mongoose.Schema({
  img: { data: Buffer, contentType: String }
});

module.exports = mongoose.model('Image', ImageSchema);

路由器.js

router.post('/blog/article/addPost', upload.single('image'), function(req, res, err) {
  var image = new Image ({
    path: req.file.path,
    filename: req.file.filename
  });
    image.save(function(err, image) {
          //other code
        });
});

部分ejs上传文件

<form action="/blog/article/addPost" method="post" enctype="multipart/form-data">
        <div class="form-group">
          <label="name">Add a picture for your article</label>
          <input id="upload-input" type="file" class="form-control" name="image"/>
        </div>
</form>

ejs 检索文件:

<div class="col-md-4">
        <form method="GET" action="/blog/article/<%= image.id %>">
          <img src="<%= image.path %>" style="width:304px;height:228px;">
        </form>
</div>

多重配置:

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/uploads/')
  },
  filename: function (req, file, cb) {
    if (!file.originalname.match(/\.(png|jpeg|jpg|wav|tif|gif)$/)) {
      var err = new Error();
      err.code = 'filetype';
      return cb(err);
    } else {
      cb(null, Date.now() + "_" + file.originalname);
    }

  }
});

【问题讨论】:

    标签: node.js mongodb multer


    【解决方案1】:

    我不得不从路径中删除“public”。这个link 帮我解决了这个问题

    【讨论】:

      【解决方案2】:

      我从未使用过 multer,所以我不知道如何指导您完成它。

      但是,我确实使用了强大的图片上传功能,我已经为我的图片创建了一个公用文件夹,每次上传图片时我都会将保存路径保存在我的数据库中,这样你就可以直接访问dir 并在你的 ejs 文件中实现它。

      希望我的回答是相关的。

      祝你好运

      【讨论】:

      • 我希望不存储路径,而只存储图像本身
      • 你的意思是你想用二进制存储你的图像?我还没有尝试过这种方法,但是就可扩展性而言,保存我个人认为的路径是更好的方法。
      • 我更改了代码以保存路径,而不是以二进制格式保存图像,但我仍然无法检索图像。
      • 你的快递有静态文件夹配置吗?
      • 我用它来提供我所有的静态文件:app.use(express.static(__dirname + '/public'));
      猜你喜欢
      • 1970-01-01
      • 2017-07-05
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 2017-02-23
      相关资源
      最近更新 更多