Реагируйте, и NodeJS загружает файл с помощью Multer, не удается установить имя файла и завершение

#javascript #node.js #reactjs #upload #multer

Вопрос:

Я создаю приложение в React и узле, в котором есть компонент загрузки. Мне удалось загрузить файл в React, отправил его в узел с помощью multer, но он сохраняется в виде случайной строки без какого-либо завершения, только типа file. Если я вручную изменю окончание на pdf, чтобы сказать, что я могу открыть его и просмотреть содержимое, но я хотел бы сделать это автоматически.

Вот что я сделал в nodejs:

 var multer = require('multer')
const upload = multer({ dest: "./uploads" });

app.post('/upload', upload.single('file'), function (req, res, next) {


var f = req.file;
console.log(f);
var s = req.body.standard;
console.log(s);




})
 

В журнале файловой консоли он выводит мне сведения о файле. Из всего, что я пытался сделать, было изменить
req.file.filename = req.file.originalname; req.file.path = "./uploads/" req.file.originalname;

думал, что это может изменить имя файла на компьютере, но это не сработало.

Еще одна вещь, которую я попробовал, — это вставить этот код:

 var storage = multer.diskStorage({
  destination: function (req, file, cb) {
  cb(null, 'public')
},
filename: function (req, file, cb) {
  cb(null, Date.now()   '-'  file.originalname )
}
})
 

и изменить const upload с помощью var upload = multer({ storage: storage }).single('file')

вне метода post и внутри него, но он не работает. Это ничего не делает.

Может кто-нибудь, пожалуйста, предоставить мне полный код о том, как должна выглядеть моя страница js с помощью метода post и кода, который задает имя файла и папку внутри проекта узла. Заранее спасибо. В Интернете я могу найти только фрагменты кода, и я не знаю, куда их интегрировать.

Спасибо

Ответ №1:

Попробуйте использовать следующий код

 const multer = require('multer')

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, 'public')
    },
    filename: function(req, file, cb) {
        cb(null, Date.now()   '-'   file.originalname)
    }
})

const upload = multer({
    storage: storage
})

app.post('/upload', upload.single('file'), function(req, res, next) {
    const f = req.file;
    console.log(f);
    const s = req.body.standard;
    console.log(s);
})