一、文件的上传
from handler import BaseHandler
class SqlAudit(BaseHandler):
def post(self):
import os
sql_file = self.request.files
print('sql_file为字典---->', type(sql_file))
print('sql_file的key值--->', sql_file.keys())
print('文件二进制值内容--->', self.request.files['sqlfile']) # type is list
print('取出第一个文件内容-->', self.request.files['sqlfile'][0]['body'])
ll = self.request.files['sqlfile'][0]['body']
with open('eee.txt', 'wb') as up:
up.write(ll)
self.write('finished! 0k')
二、文件的下载
- 通常传来
sign
解密后得到文件路径
、文件名
、有效期时间
- 也可同步生成文件,然后再返回出去
- 文件分片读取,分片下载(大小文件均适合)
class DownLoadFileHandler(BaseHandler):
def get(self):
token = self.req.query.get('token')
filepath = self.req.query.get('filepath')
filename = self.req.query.get('filename')
sign = self.req.query.get('sign')
self.set_header('Content-Type', 'application/octet-stream')
self.set_header('Content-Disposition', f'attachment; filename="{fname}"')
with open(filepath, 'rb') as f: # 分块下载
while True:
c = f.read()
if not c:
break
self.write(c)
self.finish()