Здравствуйте. Подскажите пожалуйста. Как можно удалить недокаченный файл: отмена пользователя, обрыв соединения? Для загрузки использую Multer. В событии
req.on('close', ..) отлавливаю отмену соединения, но файл не удаляется (хотя в логах пишет про удаление), его и вручную удалить нельзя, вроде как бы stream его держит. Спасибо.
const pathApp = 'app';
const pathUploads = path.join(__dirname, '..', process.env.APP_PATH_UPLOADS, pathApp);
const filenameApp = 'еее.apk';
const filenameAppTmp = `tmp_${filenameApp}`;
const fullPathApp = path.join(pathUploads, filenameApp);
const fullPathAppTmp = path.join(pathUploads, filenameAppTmp);
const fileFilter = async (req, file, next) => {
if (!fs.existsSync(pathUploads)) fs.mkdirSync(pathUploads);
return next(null, true);
};
const storage = multer.diskStorage({
destination(req, file, cb) {
cb(null, pathUploads);
},
filename(req, file, cb) {
cb(null, filenameAppTmp);
}
});
const upload = multer({
fileFilter,
storage
});
routes.post('/upload', (req, res, next) => {
req.on('close', async () => {
fs.unlink(fullPathAppTmp, err => {
if (err) return console.log(err);
console.log('path/file.txt was deleted');
});
});
upload.single('file')(req, res, next);
req.on('end', () => {
fs.rename(fullPathAppTmp, fullPathApp, err => {
if (err) throw err;
});
res.status(204).send();
});
});