FileUploadMiddleware.js 798 B

12345678910111213141516171819202122232425262728293031
  1. import multer from 'multer'
  2. import Settings from '@overleaf/settings'
  3. import logger from '@overleaf/logger'
  4. const upload = multer({
  5. dest: Settings.path.uploadFolder,
  6. limits: {
  7. fileSize: Settings.maxUploadSize,
  8. parts: 2,
  9. },
  10. })
  11. function multerMiddleware(req, res, next) {
  12. return upload.single('qqfile')(req, res, function (err) {
  13. if (err instanceof multer.MulterError && err.code === 'LIMIT_FILE_SIZE') {
  14. return res.status(422).json({ success: false, error: 'file_too_large' })
  15. }
  16. if (err) return next(err)
  17. if (!req.file?.path) {
  18. logger.info({ req }, 'missing req.file.path on upload')
  19. return res
  20. .status(400)
  21. .json({ success: false, error: 'invalid_upload_request' })
  22. }
  23. next()
  24. })
  25. }
  26. export default {
  27. multerMiddleware,
  28. }