Я пытаюсь загрузить файл в конкретный каталог на диске. Я использую библиотеку multer. И насколько я понимаю этот код и как он выглядит сейчас, когда он получает запрос, он берет файл и пытается его сохранить, и он происходит отдельно от остальной части запроса. Есть ли способ получить доступ к полному запросу, скажем, функции назначения (# 1). Вот мой кодЗагрузка файла NodeJS с помощью multer
var storage = multer.diskStorage({
destination: function (req, file, callback) {
console.log(req) // #1 here i dont see other fields from request
callback(null, './uploads')
},
filename: function (req, file, callback) {
callback(null, Date.now() + '-' + file.originalname)
}
})
var upload = multer({ storage: storage }).single('file')
router.post('/api/photos', function (req, res, next) {
upload(req, res, function(err) {
console.log(req) // here i see other fields from request like req.body.description
if (err) {return next(err)}
res.json(201)
})
});
То, что я хотел бы на самом деле сделать, это сказать multer. «Эй, я хочу, чтобы вы сохранили файл в каталоге/uploads/restOfThePat». Где restOfThePath передается в запросе.
Я знаю, что я могу изменить местоположение файла позже (не пробовал это, не знаю, работает ли он). Однако, похоже, это хакки, и я не могу поверить, что это невозможно, как другие чистые способы. Очевидно, что multer не является обязательным, если есть какая-то другая библиотека, которую я бы хотел посмотреть.
в любом случае этот файл сохраняет в папку закачек, внутри router.post («/ API/фото») вы будете получите оставшуюся часть запроса, проверьте это поле, используя «req.body.form_field» после этого, если вы хотите изменить путь назначения, перемещайте файл из папки для загрузки везде, где вам нужно использовать fs –