在Web开发中,处理HTTP请求中的文件上传是一个常见的需求。当用户需要通过Web表单上传文件(如图片、文档等)时,服务器端需要能够接收并处理这些文件。在Python中,有多种方式可以实现这一功能,其中最常见的是使用Web框架(如Flask、Django等)来处理文件上传。
然后,创建一个简单的Flask应用来接收文件上传:
python复制代码
from flask import Flask, request, render_template, send_from_directory | |
import os | |
app = Flask(__name__) | |
UPLOAD_FOLDER = 'uploads/' | |
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER | |
# 确保上传文件夹存在 | |
if not os.path.exists(app.config['UPLOAD_FOLDER']): | |
os.makedirs(app.config['UPLOAD_FOLDER']) | |
@app.route('/upload', methods=['GET', 'POST']) | |
def upload_file(): | |
if request.method == 'POST' and 'file' in request.files: | |
file = request.files['file'] | |
# 如果用户没有选择文件,浏览器也会提交一个空的文件部分没有文件名 | |
if file.filename == '': | |
return 'No selected file', 400 | |
if file: | |
filename = secure_filename(file.filename) # 使用Flask的secure_filename来避免潜在的安全问题 | |
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) |
此外,我们还需要一个HTML表单来允许用户选择并上传文件。这个表单的action属性应该设置为/upload,并且应该包含一个类型为file的<input>元素来接收用户选择的文件。当用户提交表单时,浏览器会发送一个包含文件的POST请求到服务器。