文件下载接口
import flask
import os
import sys
import json
from django.utils.encoding import escape_uri_path
from flask import request
from flask import Response
interface_path = os.path.dirname(__file__)
sys.path.insert(0, interface_path)
app = flask.Flask(__name__)
file_path = 'D:\\python\\项目\\jiekou\\moban'
def file_iterator(file_name, chunk_size=512):
"""
文件读取迭代器
:param file_name:文件名称
:param chunk_size: 每次读取流大小
:return:
"""
with open(file_path + "\\" + file_name, 'rb') as target_file:
while True:
chunk = target_file.read(chunk_size)
if chunk:
yield chunk
else:
break
@app.route('/download', methods=['GET'])
def download():
"""
文件下载
:return:
"""
file_name = request.values.get('fileName')
print(type(file_name))
if file_name == '':
return json.dumps({'code': 202, 'message': '请输入正确文件名'}, ensure_ascii=False)
else:
if not str(os.path.isfile(file_path + "\\" + file_name)):
return json.dumps({'code': 203, 'message': '文件不存在'}, ensure_ascii=False)
else:
response = Response(file_iterator(file_name))
response.headers['Content-Type'] = 'application/octet-stream'
response.headers["Content-Disposition"] = 'attachment;filename="{}"'.format(escape_uri_path(file_name))
return response
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)