var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/tmp/my-uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
var upload = multer({ storage: storage })
我需要调整图像大小并将图像大小压缩到最低位置并上传到目录中。有什么帮助?
答案 0 :(得分:1)
您可以为multer创建自定义存储引擎。
根据official documentation,自定义存储引擎是公开两个功能的类:_handleFile
和_removeFile
。
以下是创建自定义存储引擎(Link)的官方模板:
var fs = require('fs')
function getDestination (req, file, cb) {
cb(null, '/dev/null')
}
function MyCustomStorage (opts) {
this.getDestination = (opts.destination || getDestination)
}
MyCustomStorage.prototype._handleFile = function _handleFile (req, file, cb) {
this.getDestination(req, file, function (err, path) {
if (err) return cb(err)
var outStream = fs.createWriteStream(path)
file.stream.pipe(outStream)
outStream.on('error', cb)
outStream.on('finish', function () {
cb(null, {
path: path,
size: outStream.bytesWritten
})
})
})
}
MyCustomStorage.prototype._removeFile = function _removeFile (req, file, cb) {
fs.unlink(file.path, cb)
}
module.exports = function (opts) {
return new MyCustomStorage(opts)
}
在将_handleFile
功能保存到磁盘之前,可以减小图像大小。
为了减小图像尺寸,您可以选择形成各种npm模块来完成这项工作。一些值得检查的模块是Sharp,Light-weight image processor和GraphicsMagick for node。
答案 1 :(得分:0)
这可以使用multer-imager npm modeule来完成。
http://www.npmjs.com/package/multer-imager
确保在此之前安装graphicsmagick(不是npm模块)。 按照以下链接安装graphicsmagick。
然后安装multer-imager和gm npm模块。