【发布时间】:2023-03-31 01:32:02
【问题描述】:
我正在使用 nodejs 编写文件上传/解析器(具体来说是 MEAN.io)。其功能是上传文件,解析为 json,并将内容作为页面返回。上传文件是否通过 bodyParser() 自动删除?如果有,时间线是什么。如果没有,是否有更好的中间件可以自动删除临时文件,即上传的文件?
【问题讨论】:
标签: node.js file filesystems mean
我正在使用 nodejs 编写文件上传/解析器(具体来说是 MEAN.io)。其功能是上传文件,解析为 json,并将内容作为页面返回。上传文件是否通过 bodyParser() 自动删除?如果有,时间线是什么。如果没有,是否有更好的中间件可以自动删除临时文件,即上传的文件?
【问题讨论】:
标签: node.js file filesystems mean
bodyParser() 不再处理抓取上传的文件(2013 年年中的某个时候从其中删除了 multipart),因此临时文件本身没有问题。
如果您使用的是多部分中间件包之一(busboy、formidable 等),则必须明确处理临时文件。这通常并不难:
app.post('/upload', function(req, res) {
var form = new formidable.IncomingForm();
var body = "No file uploaded";
form.on('file', function(name, file) {
try {
body = JSON.parse(fs.readFileSync(file.path));
} catch (e) {console.log(e)}
fs.unlink(file.path);
});
form.on('end', function(){
res.json(body);
});
form.parse(req);
});
即便如此,最好还是监视过多的临时文件(如reap 或tmpwatch)。请记住,大多数中间件将临时文件放在os.tmpdir() 中,这可能与/tmp 不同!
【讨论】: