ОБНОВЛЕНИЕ ДЛЯ ТЕХ, У КОГО ИМЕЕТ ФУНКЦИЮ ЗАГРУЗКИ НЕ В ИНДЕКСЕ. JS ФАЙЛ ДЛЯ ПРИМЕРА IN / APP_NAME / ROUTES ИЛИ /APP_NAME/SERVER/SRC/ROUTE/ROUTE.JS (версия mern_stack)
Итак, в моем случае я сделал функцию загрузки в папке /app/controllers/
Структура расположения файла моего контроллера:
/my_app_name/server/src/app/controllers/FileUploader.js
Мой root расположение файла сервера / индекса:
/my_app_name/server/src/app.js
, чтобы указать местоположение для общедоступных / изображений, где я хочу хранить свои изображения:
/my_app_name/server/src/public/images
в /my_app_name/server/src/app/controllers/FileUploader.js
Мне пришлось использовать require('path')
и вот как это выглядит:
const path = require("path");
const addImages = async(req, res, next) => {
const file = req.files.file;
console.log('files',file)
try{
if(file === null){
throw new Error('Not file Specified')
}
await file.mv(path.join(path.dirname('/app/server/src/'), '/src/public/images/') + file.name)
res.status(200).json({fileName: file.name, filePath: `/public/images/${file.name}`});
}
catch(err){
console.log(err)
return res.status(400).send(err.message);
}
}
объяснение причины, по которой мне пришлось использовать path.join()
и path.dirname()
в основном я не мог использовать (path.join(__dirname, "./public/images"))
или __dirname
в общем, так как он выдаст мне путь, где находится мой FileUploader. js is, который равен /my_app_name/server/src/app/controllers/
, а затем, если бы я добавил "./public/images"
, он бы посмотрел на /my_app_name/server/src/app/controllers/public/images
Поэтому нам нужно указать path.dirname()
где находится ваша папка узла root, в моем случае это будет path.dirname('/app/server/src/')
, так как у меня такой неаккуратный стек MERN tructure с docker
, а остальным вам просто нужно присоединить свое имя к своему общедоступному / местоположению изображений, которое составляет path.join(path.dirname('/app/server/src/'), '/src/public/images/')
, так что все вместе это должно быть await file.mv(path.join(path.dirname('/app/server/src/'), '/src/public/images/') + file.name)
(ЕСЛИ ВЫ ИМЕЙТЕ ТАКУЮ СТРУКТУРУ СТЕКА SLOPPPY MERN, КАК МЕНЯ :))
Надеюсь, это кому-то поможет! Удачного выродка! :)