Ara*_*ind 15 node.js npm express multer
我的应用程序需要如下:我将图像上传到Cloudinary并将图像的url存储在我的mongodb数据库中.
要将图像上传到cloudinary,我需要提供文件路径,为此,我使用的是multer.我使用以下语句:
app.use(multer({dest:'./ uploads /'}));
我面临的问题是,每次我将本地系统上的图像上传到Cloudinary上的数据库时,都会在'./uploads/'中创建本地副本.我希望这不会发生,因为我的图像存在于Cloudinary上.
Multer接受一个选项对象,其中最基本的是dest属性,告诉Multer上传文件的位置.如果省略options对象,则将重命名该文件并将其上载到系统的临时目录中.
我无法确定临时上传空间是否需要清理或是否需要清理.我的图像上传到Cloudinary.I使用multer仅获取:
req.files.photo.path
工作.有没有其他方法可以做同样的事情或者multer是否可以配置为不将图像存储到本地系统?
2018 年 7 月:
因此,如果要将图像存储到某种数据库中,您可能希望将其转换为缓冲区,然后将缓冲区插入数据库中。如果是multer用来处理multipart表单(这里是你要上传的图片文件),可以直接使用multer'smemoryStorage来获取图片的缓冲区。换句话说:
var storage = multer.memoryStorage();
var upload = multer({ storage: storage });
获取缓冲区:
使用内存存储时,文件信息将包含一个称为缓冲区的字段,该字段包含整个文件。
这意味着您可以从命令中获取缓冲区,例如 req.files[0].buffer
我更新了一个简单的 repo,演示将图像上传到数据库,而无需在此 repo 中复制到本地
在 2016 年 7 月 14 日之前,您无法配置multer在本地存储文件。
但multer只是Busboy的包装。所以,busboy如果想避免撞盘,我们可以尝试直接使用。
Connect-bubsboy将帮助我们:
app.use(busboy());
// request handler
req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
file.on('end', function() {
// do stuff with req.files[fieldname]
});
});
Run Code Online (Sandbox Code Playgroud)
更新 14-07-2016
现在 multer 必须MemoryStorage将文件作为缓冲区存储在内存中。
var storage = multer.memoryStorage()
var upload = multer({ storage: storage })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8479 次 |
| 最近记录: |