Skip to content

Instantly share code, notes, and snippets.

@mehmetkose
Forked from alejandrobernardis/handlers.py
Created December 23, 2016 11:27
Show Gist options
  • Save mehmetkose/2f2814763744fa4f6f935a8ce4f04c89 to your computer and use it in GitHub Desktop.
Save mehmetkose/2f2814763744fa4f6f935a8ce4f04c89 to your computer and use it in GitHub Desktop.
Tornado, Download File
class AdminFileHandler(BaseHandler):
@authenticated
def get(self, file_name):
_file_dir = os.path.abspath("")+"/my/path/downloads"
_file_path = "%s/%s" % (_file_dir, file_name)
if not file_name or not os.path.exists(_file_path):
raise HTTPError(404)
self.set_header('Content-Type', 'application/force-download')
self.set_header('Content-Disposition', 'attachment; filename=%s' % file_name)
with open(_file_path, "rb") as f:
try:
while True:
_buffer = f.read(4096)
if _buffer:
self.write(_buffer)
else:
f.close()
self.finish()
return
except:
raise HTTPError(404)
raise HTTPError(500)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment