flask⽂件下载与上传思路相似
包括表单⽂件和业务处理逻辑py模块
表单⽂件
直接打``开⽂件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:5001/downloader" method="GET">
<p><input type="submit" value="⽂件下载打开"/></p>
<br>
</form> <form action="http://127.0.0.1:5001/downloader3" method="POST">
<p><input type="text" name = 'file1'></p>
<p><input type="submit" value="⽂件下载"/></p>
</form>
</body>
</html>
以附件形式下载⽂件
详⻅代码⽂件
import os
from flask import Flask,request,render_template,make_response,session,redirect,url_for,send_file,send_from_directory
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = r'D:\pythonProject1\static'
@app.route('/')
def index():
return render_template('download.html')
@app.route('/downloader',methods = ['GET'])
def downloader():
filename = os.path.join(app.config['UPLOAD_FOLDER'],'1.jpg')
return send_file(filename)
@app.route('/downloader/<filename>',methods = ['GET'])
def downloader2(filename):
filename = os.path.join(app.config['UPLOAD_FOLDER'],filename)
return send_file(filename)
@app.route('/downloader3',methods = ['POST'])
def downloader3():
filename = request.form['file1']
resp = make_response(send_from_directory(app.config['UPLOAD_FOLDER'],filename,as_attachment = True))
resp.headers['Content-Disposition'] = f"attachment; filename ={filename.encode().decode('latin-1')}"
return resp
if __name__ == '__main__':
app.debug = True
app.run('127.0.0.1',5001)