0

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

2 に答える 2

1

バスボーイはわかりませんが、ストリームを開いて閉じません。ストリームとファイル名を「終了」と「エラー」に悪用して、それに応じて行動してみませんか?

例:

busboy.on('error', function() {
    fs.unlink('./uploads/' + filename);
    console.log('error busboy');
}
于 2014-09-13T21:28:17.063 に答える