Как передать имя файла в запросе на загрузку с помощью AJAX и Multer

#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» является заполнителем), и если он ошибается, я загружаю файл в состоянии ошибки (я знаю, что это, вероятно, не лучшая идея, но я больше ничего не могу вспомнить).