下面我来详细讲解一下“Python Flask实现图片上传与下载的示例详解”的完整攻略。
一、示例一:实现图片上传
1. 安装Flask
首先需要安装Flask,可以使用pip install flask命令进行安装。
pip install flask
2. 创建Flask应用
创建一个Python文件,比如叫做app.py,然后在里面写入以下代码:
from flask import Flask, request, redirect, url_for
import os
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads' # 上传文件保存位置
@app.route('/')
def home():
return """
<html>
<body>
<h1>图片上传示例</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
"""
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return redirect(request.url)
file = request.files['file']
if file.filename == '':
return redirect(request.url)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return redirect(url_for('home'))
if __name__ == '__main__':
app.run(debug=True)
这段代码定义了一个名为app的Flask应用,并设置了一个名为UPLOAD_FOLDER的变量,该变量表示上传文件保存的位置。然后,我们定义了两个路由,一个路由为'/',用于显示上传图片的表单,另一个路由为'/upload',用于处理上传图片的请求。
3. 运行Flask应用
可以使用以下命令启动Flask应用:
python app.py
然后,在浏览器中访问http://localhost:5000即可看到一个用于上传图片的表单。选择一张图片,然后点击上传按钮,该图片将会被上传到static/uploads目录下。
二、示例二:实现图片下载
1. 创建一个用于下载图片的路由
在app.py中添加一个新的路由/show/
@app.route('/show/<filename>')
def show(filename):
return redirect(url_for('static', filename=f'uploads/{filename}'), code=301)
2. 修改home页面代码
在home页面中添加一个链接用来下载上传的图片,代码如下:
from flask import Flask, request, redirect, url_for
import os
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads' # 上传文件保存位置
@app.route('/')
def home():
# 获取上传图片列表
upload_files = os.listdir(app.config['UPLOAD_FOLDER'])
# 构造页面HTML代码
html = """
<html>
<body>
<h1>图片上传示例</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
<br>
<h1>已上传的图片</h1>
<ul>
"""
for file in upload_files:
html += f'<li><a href="/show/{file}" target="_blank">{file}</a></li>'
html += """
</ul>
</body>
</html>
"""
return html
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return redirect(request.url)
file = request.files['file']
if file.filename == '':
return redirect(request.url)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return redirect(url_for('home'))
@app.route('/show/<filename>')
def show(filename):
return redirect(url_for('static', filename=f'uploads/{filename}'), code=301)
if __name__ == '__main__':
app.run(debug=True)
3. 运行Flask应用
和示例一一样,使用以下命令启动Flask应用:
python app.py
然后,在浏览器中访问http://localhost:5000即可看到一个上传图片的表单,上传一张图片之后,会在该页面下方显示已上传的图片列表,点击该列表中的图片名称,即可下载该图片。
至此,我们就实现了图片上传和下载的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Flask实现图片上传与下载的示例详解 - Python技术站