【问题标题】:NodeJS/MEAN.io temp filesNodeJS/MEAN.io 临时文件
【发布时间】:2023-03-31 01:32:02
【问题描述】:

我正在使用 nodejs 编写文件上传/解析器(具体来说是 MEAN.io)。其功能是上传文件,解析为 json,并将内容作为页面返回。上传文件是否通过 bodyParser() 自动删除?如果有,时间线是什么。如果没有,是否有更好的中间件可以自动删除临时文件,即上传的文件?

【问题讨论】:

    标签: node.js file filesystems mean


    【解决方案1】:

    bodyParser() 不再处理抓取上传的文件(2013 年年中的某个时候从其中删除了 multipart),因此临时文件本身没有问题。

    如果您使用的是多部分中间件包之一(busboyformidable 等),则必须明确处理临时文件。这通常并不难:

    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);
    });
    

    即便如此,最好还是监视过多的临时文件(如reaptmpwatch)。请记住,大多数中间件将临时文件放在os.tmpdir() 中,这可能与/tmp 不同!

    【讨论】:

    • 是的,我读到在最新版本的 expresses 中,对于文件上传,body parse 已经过时了。将来我将更新到多部分 middelwares 之一。另外,我一直在调用 fs.unlink 来删除临时文件。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2013-02-02
    • 2016-06-30
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多