о том, как отправить запрос REST, я говорю, что у нас нет запроса REST, REST - это просто конструкция, которая принимает запросы get, post, put, del. так что вы работаете так же, как и без RESTful design
, вы можете использовать этот пакет , оптимизированный для загрузки файлов.
сначала определите помощника загрузки, используя multer:
const multer = require('multer');
const mkdirp = require('mkdirp');
const fs = require('fs');
const getDirImage = () => {
let year = new Date().getFullYear();
let month = new Date().getMonth() + 1;
let day = new Date().getDay();
return `${config.homedir}/public_html/uploads/images/${year}/${month}/${day}`;
};
const ImageStorage = multer.diskStorage({
destination: (req, file, cb) => {
let dir;
if (file.mimetype === 'text/css') {
dir = getDirCss();
} else {
dir = getDirImage();
}
mkdirp(dir, (err) => cb(null, dir))
},
filename: (req, file, cb) => {
let filePath;
if (file.mimetype === 'text/css') {
filePath = getDirCss() + '/' + file.originalname;
} else {
filePath = getDirImage() + '/' + file.originalname;
}
if (!fs.existsSync(filePath))
cb(null, file.originalname);
else
cb(null, Date.now() + '-' + file.originalname);
}
});
const uploadImage = multer({
storage: ImageStorage,
limits: {
fileSize: 1024 * 1024 * 10
}
});
module.exports = uploadImage;
в вашем файле маршрута:
const upload = require('path/to/upload/helper');
router.post('/imageUpload', upload.single('image'), imageValidator.handle(), imageController.update);
, затем вы можете получить доступ к загруженному файлу в req.file
о возврате iamge обратно пользователю вы можете вернуть его URL в папку загрузки, чтобы он мог его получить; но для этого вам нужно подать файлы stati c:
app.use(express.static('your_upload_dir'));
, теперь вы можете получить доступ к файлам stati c:
your_url/file's_location
или: localhost:your_app_port/file's location
если вы тестируете на localhost
, если вы хотите ограничить доступ к этим файлам, вы можете использовать промежуточное ПО для проверки токена пользователя или IP-адреса или чего-то еще. трудной частью было бы создание модели для хранения имени файла и URL-адреса, а также маршрут для запроса файлов по их имени.