ProjectUploadController.coffee 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. logger = require "logger-sharelatex"
  2. metrics = require "../../infrastructure/Metrics"
  3. fs = require "fs"
  4. Path = require "path"
  5. FileSystemImportManager = require "./FileSystemImportManager"
  6. ProjectUploadManager = require "./ProjectUploadManager"
  7. module.exports = ProjectUploadController =
  8. uploadProject: (req, res, next) ->
  9. timer = new metrics.Timer("project-upload")
  10. user_id = req.session.user._id
  11. {originalname, path} = req.files.qqfile
  12. name = Path.basename(originalname, ".zip")
  13. ProjectUploadManager.createProjectFromZipArchive user_id, name, path, (error, project) ->
  14. fs.unlink path, ->
  15. timer.done()
  16. if error?
  17. logger.error
  18. err: error, file_path: path, file_name: name,
  19. "error uploading project"
  20. res.send success: false
  21. else
  22. logger.log
  23. project: project._id, file_path: path, file_name: name,
  24. "uploaded project"
  25. res.send success: true, project_id: project._id
  26. uploadFile: (req, res, next) ->
  27. timer = new metrics.Timer("file-upload")
  28. name = req.files.qqfile.originalname
  29. path = req.files.qqfile.path
  30. project_id = req.params.Project_id
  31. folder_id = req.query.folder_id
  32. if !name? or name.length == 0 or name.length > 150
  33. logger.err project_id:project_id, name:name, "bad name when trying to upload file"
  34. return res.send success: false
  35. logger.log folder_id:folder_id, project_id:project_id, "getting upload file request"
  36. user_id = req.session.user._id
  37. FileSystemImportManager.addEntity user_id, project_id, folder_id, name, path, true, (error, entity) ->
  38. fs.unlink path, ->
  39. timer.done()
  40. if error?
  41. logger.error
  42. err: error, project_id: project_id, file_path: path,
  43. file_name: name, folder_id: folder_id,
  44. "error uploading file"
  45. res.send success: false
  46. else
  47. logger.log
  48. project_id: project_id, file_path: path, file_name: name, folder_id: folder_id
  49. "uploaded file"
  50. res.send success: true, entity_id: entity?._id