flask服务,其中cache_timeout为文件在浏览器中设置的缓存时间
from flask import send_file, make_response
@app.route('/file_get', methods=['GET'])
def post_special_identifier():
resp = make_response(send_file(file_name, add_etags=False, cache_timeout=0))
file_rsp_name = "test_file_name"
resp.headers["Content-Disposition"] = 'attachment; filename={}.pdf'.format(file_rsp_name.encode().decode('latin-1'))
resp.headers['Content-Type'] = 'application/x-pdf'
return resp
tornado 服务
# -*- coding: utf-8 -*-
import logging
import json
from tornado.gen import coroutine
from server.request_base import BaseHttpHandler
__author__ = 'Ennis'
class GetLog(BaseHttpHandler):
@coroutine
def get(self):
try:
filename = "server.log"
self.set_header('Content-Type', 'application/octet-stream')
self.set_header('Content-Disposition', 'attachment; filename=' + filename)
# 读取的模式需要根据实际情况进行修改
with open(filename, 'rb') as f:
while True:
data = f.read(4096)
if not data:
break
self.write(data)
self.finish()
except Exception as ex:
self.set_status(500)
logging.error("handle outside period ex:%s", ex)
self.write({"seq": "5", "data": str(ex)})
self.finish()