上传下载文件
import io
import os
from urllib.parse import quote
from flask import Flask, request, make_response
import pandas as pd
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
file = request.files['file'] # 文件相关信息
form = request.form # 附带提交的表单相关信息
# # 读取(表格)文件流
# df = pd.read_excel(file) # 需要对应格式
filename = file.filename
file_path = os.path.split(os.getcwd())[0] + f'/{filename}'
file.save(file_path) # 存储文件至本地
return 'success'
@app.route('/download', methods=['GET', 'POST'])
def download_file():
# 转换为文件流
bio = io.BytesIO()
writer = pd.ExcelWriter(bio, engine='openpyxl') # 还依赖了openpyxl
df = pd.DataFrame() # 空测试文件
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
bio.seek(0)
file_output = bio.getvalue()
resp = make_response(file_output)
file_name = 'excel.xlsx' # 文件名
basename = os.path.basename(file_name)
resp.headers["Content-Disposition"] = f"attachment; filename*=utf-8''{quote(basename.encode('utf-8'))}"
# resp.headers["Content-Type"] = "text/csv" # .csv
# resp.headers["Content-Type"] = "application/vnd.ms-excel" # .xls
resp.headers["Content-Type"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" # .xlsx
return resp
if __name__ == '__main__':
app.run(debug=True)
遇上方知有

浙公网安备 33010602011771号