Ok multer支持内存存储,这很棒.
但是如何在上传文件后释放内存?
storage = multer.memoryStorage();
upload = multer({storage:storage}).single('image');
对于磁盘存储,我可以删除dest文件夹中的文件.
谢谢 !
EMX*_*EMX 12
- 但是上传文件后如何释放内存?
完成请求后,内存将被释放.
(当垃圾收集器(GC)清理时,通常几乎直接)
- 如果2个用户上传具有相同文件名的文件会发生什么情况,内存存储会发生什么?
您不必担心,因为每个文件都在其自己的范围内处理,这意味着,就像我上面提到的,每个请求都被处理,然后,一旦完成请求被清除(连同存储的request.file来自memoryStorage)
我建议你检查一下multer如何处理内存存储器multer/storage/memory.js(github)
MemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) {
file.stream.pipe(concat(function (data) {
cb(null, {
buffer: data,
size: data.length
})
}))
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,文件只是被流式传输到回调(cb),因此没有全局引用会使它不能存在于内存中(不再引用它=不再需要= garbage = GC)
memoryStorage主要用于临时处理文件缓冲区.
示例:您希望接收小文件并将其转发到另一个存储媒体的服务器.(multer在内存temp中接收存储,一旦没有对它的引用就会自行中继和释放内存)
| 归档时间: |
|
| 查看次数: |
3991 次 |
| 最近记录: |