flask上传图片并显示
时间: 2023-08-15 10:07:05 浏览: 51
下面是一个使用 Flask 实现图片上传和显示的示例:
```python
from flask import Flask, request, redirect, url_for, render_template
import os
app = Flask(__name__)
# 设置允许上传的文件格式
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
# 检查文件是否符合要求
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
# 上传图片
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# 检查是否有上传的文件
if 'file' not in request.files:
return redirect(request.url)
file = request.files['file']
# 如果用户没有选择文件,也会发送一个空的文件名
if file.filename == '':
return redirect(request.url)
# 检查文件格式是否符合要求
if file and allowed_file(file.filename):
# 保存上传的文件到服务器
filename = file.filename
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# 显示上传的图片
return redirect(url_for('uploaded_file', filename=filename))
# 显示上传页面
return render_template('upload.html')
# 显示图片
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return render_template('show.html', filename=filename)
if __name__ == '__main__':
app.config['UPLOAD_FOLDER'] = 'uploads'
app.run(debug=True)
```
在此示例中,我们设置了允许上传的文件格式为 png、jpg、jpeg 和 gif。在 `upload_file` 函数中,我们首先检查是否有上传的文件,并且文件格式是否符合要求。如果一切正常,我们将文件保存到服务器,并且重定向到 `uploaded_file` 函数来显示上传的图片。
在 `uploaded_file` 函数中,我们渲染一个模板来显示上传的图片。
为了使此示例正常工作,您需要在 Flask 应用程序的根目录下创建两个 HTML 模板文件,分别命名为 `upload.html` 和 `show.html`。`upload.html` 模板用于显示上传页面,`show.html` 模板用于显示上传的图片。这两个模板文件的内容如下:
`upload.html` 模板:
```html
<!doctype html>
<html>
<head>
<title>Upload new File</title>
</head>
<body>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit value=Upload>
</form>
</body>
</html>
```
`show.html` 模板:
```html
<!doctype html>
<html>
<head>
<title>Image</title>
</head>
<body>
<h1>Image</h1>
<img src="{{ url_for('static', filename='uploads/' + filename) }}" alt="image">
</body>
</html>
```
以上示例中,我们使用了 Flask 的 `url_for` 函数来构建图片的 URL。这里要注意的是,我们将上传的图片保存到了名为 `uploads` 的文件夹中。如果您希望将文件保存到其他文件夹中,需要相应地修改代码。
另外,我们还需要在 Flask 应用程序中设置一个名为 `UPLOAD_FOLDER` 的配置变量,用于指定上传文件的保存路径。在示例中,我们将保存路径设置为 `uploads`。如果您希望将上传的文件保存到其他路径,需要相应地修改代码。