Я пытаюсь загрузить файлы в папку, используя multer, и она работает нормально.
Теперь мое требование - прежде чем загружать файл в папку «загрузки», сначала следует удалить его, создать папку загрузки и затем загрузитьit.
Я просто хочу выполнить операцию с загруженным файлом, а не с предыдущими сохраненными данными.
Код:
const fs = require("fs-extra");
const path = require("path");
const uploadPath = path.resolve(__dirname, "uploads");
const multer = require("multer");
const storage = multer.diskStorage({
destination: "./uploads/",
filename: function(req, file, cb) {
cb(null, file.originalname);
}
});
const upload = multer({ storage: storage });
router.post("/fileupload", upload.array("docs", 10), async function(
req,
res,
next
) {
let result = {};
try {
if (fs.existsSync(uploadPath)) {
fs.removeSync(uploadPath);
console.log("dir removed");
fs.ensureDirSync(uploadPath);
console.log("directory created");
} else {
fs.ensureDirSync(uploadPath);
console.log("directory created");
}
const uploadObj = util.promisify(upload.any());
await uploadObj(req, res);
result.message = "Upload successful";
res.send(result);
} catch (e) {
console.error(e);
console.error("Upload error");
}
});
Я также пытался сделать код асинхронным, но после этого он не загружаетсялюбой файл.Я понял, что upload.array - это промежуточное ПО, поэтому оно запускается первым при каждом вызове POST, а остальные запускаются после этого.Поэтому multer загружает данные в существующую папку, а затем, когда они попадают внутрь POST, fs удаляет и создает их снова.
как я могу заставить их работать?
Спасибо