#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);
})