FileStoreController.coffee 1021 B

123456789101112131415161718192021
  1. logger = require('logger-sharelatex')
  2. FileStoreHandler = require("./FileStoreHandler")
  3. ProjectLocator = require("../Project/ProjectLocator")
  4. module.exports =
  5. getFile : (req, res)->
  6. project_id = req.params.Project_id
  7. file_id = req.params.File_id
  8. queryString = req.query
  9. logger.log project_id: project_id, file_id: file_id, queryString:queryString, "file download"
  10. ProjectLocator.findElement {project_id: project_id, element_id: file_id, type: "file"}, (err, file)->
  11. if err?
  12. logger.err err:err, project_id: project_id, file_id: file_id, queryString:queryString, "error finding element for downloading file"
  13. return res.sendStatus 500
  14. FileStoreHandler.getFileStream project_id, file_id, queryString, (err, stream)->
  15. if err?
  16. logger.err err:err, project_id: project_id, file_id: file_id, queryString:queryString, "error getting file stream for downloading file"
  17. return res.sendStatus 500
  18. res.setHeader("Content-Disposition", "attachment; filename=#{file.name}")
  19. stream.pipe res