GetFile.py 776 B

1234567891011121314151617181920212223242526272829303132
  1. import os
  2. from flask import abort
  3. from flask import send_from_directory
  4. from flask.views import View
  5. from pycs.database.File import File
  6. class GetFile(View):
  7. """
  8. returns binary file data
  9. """
  10. # pylint: disable=arguments-differ
  11. methods = ['GET']
  12. def dispatch_request(self, file_id: int):
  13. # get file from database
  14. file = File.query.get(file_id)
  15. if file is None:
  16. return abort(404)
  17. # get absolute path
  18. if os.path.isabs(file.path):
  19. abs_file_path = file.path
  20. else:
  21. abs_file_path = os.path.join(os.getcwd(), file.path)
  22. # return data
  23. file_directory, file_name = os.path.split(abs_file_path)
  24. return send_from_directory(file_directory, file_name)