|
@@ -5,6 +5,22 @@ Path = require "path"
|
|
|
FileSystemImportManager = require "./FileSystemImportManager"
|
|
FileSystemImportManager = require "./FileSystemImportManager"
|
|
|
ProjectUploadManager = require "./ProjectUploadManager"
|
|
ProjectUploadManager = require "./ProjectUploadManager"
|
|
|
AuthenticationController = require('../Authentication/AuthenticationController')
|
|
AuthenticationController = require('../Authentication/AuthenticationController')
|
|
|
|
|
+Settings = require "settings-sharelatex"
|
|
|
|
|
+Errors = require "../Errors/Errors"
|
|
|
|
|
+multer = require('multer')
|
|
|
|
|
+
|
|
|
|
|
+upload = null
|
|
|
|
|
+
|
|
|
|
|
+try
|
|
|
|
|
+ upload = multer(
|
|
|
|
|
+ dest: Settings.path.uploadFolder
|
|
|
|
|
+ limits: fileSize: Settings.maxUploadSize
|
|
|
|
|
+ )
|
|
|
|
|
+catch err
|
|
|
|
|
+ if err.message == "EEXIST"
|
|
|
|
|
+ logger.log uploadFolder:Settings.path.uploadFolder, "dir already exists, continuing"
|
|
|
|
|
+ else
|
|
|
|
|
+ logger.err err:err, "caught error from multer in uploads router"
|
|
|
|
|
|
|
|
module.exports = ProjectUploadController =
|
|
module.exports = ProjectUploadController =
|
|
|
uploadProject: (req, res, next) ->
|
|
uploadProject: (req, res, next) ->
|
|
@@ -19,7 +35,10 @@ module.exports = ProjectUploadController =
|
|
|
logger.error
|
|
logger.error
|
|
|
err: error, file_path: path, file_name: name,
|
|
err: error, file_path: path, file_name: name,
|
|
|
"error uploading project"
|
|
"error uploading project"
|
|
|
- res.send success: false
|
|
|
|
|
|
|
+ if error.name? && error.name == 'InvalidError'
|
|
|
|
|
+ res.status(422).json { success: false, error: req.i18n.translate(error.message) }
|
|
|
|
|
+ else
|
|
|
|
|
+ res.status(500).json { success: false, error: req.i18n.translate("upload_failed") }
|
|
|
else
|
|
else
|
|
|
logger.log
|
|
logger.log
|
|
|
project: project._id, file_path: path, file_name: name,
|
|
project: project._id, file_path: path, file_name: name,
|
|
@@ -52,3 +71,11 @@ module.exports = ProjectUploadController =
|
|
|
project_id: project_id, file_path: path, file_name: name, folder_id: folder_id
|
|
project_id: project_id, file_path: path, file_name: name, folder_id: folder_id
|
|
|
"uploaded file"
|
|
"uploaded file"
|
|
|
res.send success: true, entity_id: entity?._id, entity_type: entity?.type
|
|
res.send success: true, entity_id: entity?._id, entity_type: entity?.type
|
|
|
|
|
+
|
|
|
|
|
+ multerMiddleware: (req, res, next) ->
|
|
|
|
|
+ return res.status(500).json {success: false, error: req.i18n.translate("upload_failed")} unless upload?
|
|
|
|
|
+ upload.single('qqfile') req, res, (err) ->
|
|
|
|
|
+ if err instanceof multer.MulterError && err.code == 'LIMIT_FILE_SIZE'
|
|
|
|
|
+ return res.status(422).json {success: false, error: req.i18n.translate("file_too_large")}
|
|
|
|
|
+
|
|
|
|
|
+ next(err)
|