#html #node.js #multer
#HTML #node.js #мультер
Вопрос:
У меня есть сервер NodeJS, на который я хочу загрузить файл, и я использую промежуточное программное обеспечение multer, в то время как я использую AJAX для отправки файла на сервер.
Я не хочу перезаписывать файл, если он уже существует на сервере, поэтому мой план состоит в том, чтобы проверить наличие файла перед его сохранением и выдать ошибку, если он существует.
Это мой код на интерфейсе:
lt;bodygt; lt;form id="uploaddat"gt; lt;input type="file" name="dat"/gt; lt;/formgt; lt;form id="uploadButtonForm"gt; lt;input type="button" value="UPLOAD" onClick="uploadFile()" /gt; lt;/formgt; lt;scriptgt; uploadFile = () =gt; { let fd = new FormData(); let file = document.forms['uploaddat']['dat'].files[0]; fd.append('file', file, "filename.dat"); let token = window.localStorage.getItem("token"); $.ajax({ type: 'POST', url: 'url.com', headers: { 'Authorization': token }, data: fd, contentType: false, processData: false }) } lt;/scriptgt; lt;/bodygt;
и это бэкэнд, использующий мультер:
var multer = require('multer'); var fs = require('fs'); var uploadedFileName = ''; var storage = multer.diskStorage({ destination: function (req, file, cb) { // checking and creating uploads folder where files will be uploaded var dirPath = './client/uploads/' if (!fs.existsSync(dirPath)) { var dir = fs.mkdirSync(dirPath); } cb(null, dirPath '/'); }, filename: function (req, file, cb) { // file will be accessible in `file` variable var fileName = file.originalname; uploadedFileName = fileName; cb(null, fileName); } }); router.upload = function (req, res, cb) { console.log(req.file) var upload = multer({ storage: storage }).array('file', 12); try{ let statsObj = fs.statSync("./test.js"); console.log("File exists! Aborting"); } catch (error) { console.log("File does not exist, uploading...") upload(req, res, function (err) { if (err) { // An error occurred when uploading return res.json(err); } return res.json(uploadedFileName); }); } };
Я могу загружать файлы без проблем, и они сохраняют свои оригинальные имена, но у меня возникают проблемы с получением имени загружаемых файлов. Моя цель-попытаться найти сведения о файле с загруженным именем файла в каталоге (‘test.js» является заполнителем), и если он ошибается, я загружаю файл в состоянии ошибки (я знаю, что это, вероятно, не лучшая идея, но я больше ничего не могу вспомнить).