Python Flask 文件上传
在 web 开发中,有时候我们需要让用户上传文件,比如图片、文档等。Python Flask 提供了简单且强大的功能来处理文件上传。本文将详细介绍如何在 Flask 中实现文件上传功能。
准备工作
在开始之前,你需要确保已经安装了 Flask。如果没有安装,你可以使用以下命令进行安装:
pip install flask
在项目目录下创建一个名为 uploads
的文件夹,用来存储用户上传的文件。
创建 Flask 应用
首先,我们需要创建一个 Flask 应用,并设置一个简单的文件上传表单页面。
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
接下来,我们需要创建一个名为 index.html
的模板文件,用来展示文件上传表单。
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>上传文件</h1>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
文件上传处理
现在我们需要在 Flask 应用中添加一个路由来处理文件上传。
import os
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return '文件上传成功!'
return '文件上传失败!'
在这个路由中,我们首先获取用户上传的文件,然后将文件保存到 uploads
文件夹中。最后返回文件上传成功的消息。
运行应用
现在我们可以运行 Flask 应用,并在浏览器中访问 http://127.0.0.1:5000
来上传文件。
python app.py
示例
下面是一个完整的示例代码:
from flask import Flask, render_template, request
import os
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return '文件上传成功!'
return '文件上传失败!'
if __name__ == '__main__':
app.run(debug=True)
结果
当你访问 http://127.0.0.1:5000
后,会看到一个文件上传表单。上传文件后,文件将保存到 uploads
文件夹中,同时页面会显示文件上传成功的消息。
通过以上的步骤,我们成功实现了在 Flask 应用中上传文件的功能。