import os from flask import abort from flask import send_from_directory from flask.views import View from pycs.database.File import File class GetFile(View): """ returns binary file data """ # pylint: disable=arguments-differ methods = ['GET'] def dispatch_request(self, file_id: int): # get file from database file = File.query.get(file_id) if file is None: return abort(404) # get absolute path if os.path.isabs(file.path): abs_file_path = file.path else: abs_file_path = os.path.join(os.getcwd(), file.path) # return data file_directory, file_name = os.path.split(abs_file_path) return send_from_directory(file_directory, file_name)