Node.js 如何删除不完整的上传文件?

Node.js 如何删除不完整的上传文件?,node.js,busboy,Node.js,Busboy,我正在创建一个节点服务器,使用“express”、“fs”和“busboy”模块上载文件。服务器按预期工作,但当我在完成之前取消上载时,不完整的文件存储在文件系统中。如何删除不完整的文件 var express = require("express"), fs = require("fs"), Busboy = require("busboy"); app = express(); app.listen(7000); app.get("/", display_form); app.post("/

我正在创建一个节点服务器,使用“express”、“fs”和“busboy”模块上载文件。服务器按预期工作,但当我在完成之前取消上载时,不完整的文件存储在文件系统中。如何删除不完整的文件

var express = require("express"),
fs = require("fs"),
Busboy = require("busboy");
app = express();
app.listen(7000);
app.get("/", display_form);
app.post("/upload", function(req, res) {
var busboy = new Busboy({
    headers: req.headers
});
busboy.on("file", function(fieldname, file, filename, encoding, mime) {
    var fstream = fs.createWriteStream("./uploads/" + filename);
    file.pipe(fstream);
    file.on("data", function(chunk) {
        console.log(chunk.length);
    });
    file.on("end", function() {
        console("end");
    });

    fstream.on("close", function() {
        fstream.close();
        console("fstream close");
    });
    fstream.on("error", function() {
        console("fstream error ");
    });
});
busboy.on("finish", function() {
    console.log("uploaded");
    res.send("file uploaded");
});
busboy.on("error", function() {
    console("error busboy");
});
req.pipe(busboy);
});

我不知道巴士司机,但你开了一条小溪,却从不关上它。 为什么不利用流和文件名来“完成”和“错误”,并相应地采取行动

例如:

busboy.on('error', function() {
    fs.unlink('./uploads/' + filename);
    console.log('error busboy');
}

我不知道巴士司机,但你开了一条小溪,却从不关上它。 为什么不利用流和文件名来“完成”和“错误”,并相应地采取行动

例如:

busboy.on('error', function() {
    fs.unlink('./uploads/' + filename);
    console.log('error busboy');
}

我不知道巴士司机,但你开了一条小溪,却从不关上它。 为什么不利用流和文件名来“完成”和“错误”,并相应地采取行动

例如:

busboy.on('error', function() {
    fs.unlink('./uploads/' + filename);
    console.log('error busboy');
}

我不知道巴士司机,但你开了一条小溪,却从不关上它。 为什么不利用流和文件名来“完成”和“错误”,并相应地采取行动

例如:

busboy.on('error', function() {
    fs.unlink('./uploads/' + filename);
    console.log('error busboy');
}

谢谢你的帮助,我终于找到了解决这个问题的方法。我添加了下面提到的代码片段,它工作正常

req.on("close", function(err) {
        fstream.end();
        fs.unlink('./uploads/' + name);
        console.log("req aborted by client");
    });

谢谢你的帮助,我终于找到了解决这个问题的方法。我添加了下面提到的代码片段,它工作正常

req.on("close", function(err) {
        fstream.end();
        fs.unlink('./uploads/' + name);
        console.log("req aborted by client");
    });

谢谢你的帮助,我终于找到了解决这个问题的方法。我添加了下面提到的代码片段,它工作正常

req.on("close", function(err) {
        fstream.end();
        fs.unlink('./uploads/' + name);
        console.log("req aborted by client");
    });

谢谢你的帮助,我终于找到了解决这个问题的方法。我添加了下面提到的代码片段,它工作正常

req.on("close", function(err) {
        fstream.end();
        fs.unlink('./uploads/' + name);
        console.log("req aborted by client");
    });

很抱歉,如果上传完成,那么只有我可以获得控制权。在这种情况下,控件将不会进入任何错误处理块。如果服务器端无法确定连接是否失败或是否被用户取消,则无法确定上载是否完成。标题中是否有任何内容告诉您应该接收多少字节?因此,在('close')上,您可以进行检查。(请注意,计数在很大程度上取决于编码。)抱歉,但如果上载完成,则只有我可以获得控制权。在这种情况下,控件将不会进入任何错误处理块。如果服务器端无法确定连接是否失败或是否被用户取消,则无法确定上载是否完成。标题中是否有任何内容告诉您应该接收多少字节?因此,在('close')上,您可以进行检查。(请注意,计数在很大程度上取决于编码。)抱歉,但如果上载完成,则只有我可以获得控制权。在这种情况下,控件将不会进入任何错误处理块。如果服务器端无法确定连接是否失败或是否被用户取消,则无法确定上载是否完成。标题中是否有任何内容告诉您应该接收多少字节?因此,在('close')上,您可以进行检查。(请注意,计数在很大程度上取决于编码。)抱歉,但如果上载完成,则只有我可以获得控制权。在这种情况下,控件将不会进入任何错误处理块。如果服务器端无法确定连接是否失败或是否被用户取消,则无法确定上载是否完成。标题中是否有任何内容告诉您应该接收多少字节?因此,在('close')上,您可以进行检查。(请注意,计数在很大程度上取决于编码。)