使用imagemin压缩图像并存储在mongodb中

我试图检索已发布到我们的nodejs服务器的图像,压缩它,然后将其存储在mongodb中。 我正在使用imagemin它正在工作,即它可以采取传入的图像,压缩它,并将其存储到一个静态目标文件夹。 但是,我想要输出imagemin进程并将该图像存储在mongo中而不是目标文件夹中!

这是逻辑坐标中的中间件;

app.use(multer({ dest : './static/uploads/', limits : {... rename : function(fieldname, filename) {.... onFileUploadComplete : function(file) { //var imagemin = new Imagemin().src(file.path).dest('./static/uploads/').use(compressionType); var imagemin = new Imagemin().src(file.path).use(compressionType); imagemin.run(function(err, files) { if (err) { return next(err); } console.log('Files optimized successfully!'); }); // DO SOME LOGIC HERE TO STORE IMAGE(S) TO MONGO } }; 

从阅读imagemin的FAQ,run()函数是处理图像的正确位置? 这是存储到目标文件夹的图像?

样本package.json与版本;

 { "name": "test-project", "description": "Another Test", "version": "0.0.1", "engines": { "node": ">= 0.10.x" }, "private": true, "dependencies": { "express": "3.x", "multer": "0.x", "imagemin": "3.0.0", "mongoose": "~3.8.8", "mongoose-thumbnail": "0.0.1", "mongoose-file": "0.0.2" } } 

任何帮助或方向表示赞赏。

Ĵ

这可能不是你想要的答案 – 但你可能不想在MongoDB中存储图像。 数据库系统并不是要处理像图像这样的大型二进制文件的存储。 这是因为存储图像会消耗大量的磁盘空间,并且会显着减慢查询速度。

如果您正在构build生产应用程序,则可能需要考虑将图像文件存储到Amazon S3等文件存储服务中: http : //aws.amazon.com/s3/您可以使用多个库包括官方支持的AWS Node库: http : //aws.amazon.com/sdk-for-node-js/

现在 – 如果你真的想在MongoDB中存储图像,你可以做这样的事情:

 var imagemin = new Imagemin().src(file.path).use(compressionType); imagemin.run(function(err, files) { if (err) { return next(err); } for (var i = 0; i < files.length; i++) { var model = new MyMongooseModel({ image: files[i].contents, // files[i].contents is a Buffer that contains the image file's contents ... }); model.save(function(err) { if (err) { return next(err); } }); } }); 

这要求您使用Mongoose库来处理MongoDB: http : //mongoosejs.com/