Python实现文件上传原来这么简单

勒令课程 2024-03-14 03:36:36

在开发Web应用时,文件上传功能是非常常见且重要的需求。今天,我们将通过Python Flask框架结合Flask-Uploads库,实现文件上传功能,并提供详尽的代码示例。

安装Flask-Uploads

首先确保已安装Flask和Flask-Uploads库:

pip install Flask Flask-Uploads初始化Flask应用与Flask-Uploadsfrom flask import Flask, render_template, requestfrom flask_uploads import UploadSet, configure_uploads, IMAGES, ALLapp = Flask(__name__)app.config['UPLOADED_PHOTOS_DEST'] = 'static/uploads/' # 设置文件上传目录photos = UploadSet('photos', IMAGES) # 创建一个名为'photos'的上传集合,仅接受图片文件configure_uploads(app, photos) # 将上传集合与Flask应用绑定@app.route('/', methods=['GET', 'POST'])def upload_file(): if request.method == 'POST' and 'photo' in request.files: filename = photos.save(request.files['photo']) # 保存上传的文件 return render_template('uploaded.html', filename=filename) return render_template('upload.html')创建HTML模板创建一个用于上传文件的upload.html模板:<!DOCTYPE html><html><head> <title>文件上传</title></head><body> <form method="POST" enctype="multipart/form-data"> <input type="file" name="photo"> <input type="submit" value="Upload"> </form></body></html>创建一个显示已上传文件链接的uploaded.html模板:<!DOCTYPE html><html><head> <title>文件上传</title></head><body> <h1>问价上传成功!</h1> <p>已经上传的文件: <a href="{{ url_for('static', filename='uploads/' + filename) }}">{{ filename }}</a></p></body></html>配置与注意事项UPLOADED_PHOTOS_DEST指定了上传文件的存储位置,需要注意的是,该路径是相对于 Flask 应用的根目录。UploadSet中的第一个参数是上传集合的名称,第二个参数是文件类型过滤器,这里我们选择了IMAGES,意味着只允许上传图片文件。如果需要上传所有类型的文件,可以使用ALL。photos.save(request.files['photo'])会将上传的文件保存到指定目录,并返回存储后的文件名。在uploaded.html模板中,我们通过url_for函数生成上传文件的静态资源链接,用户可以直接点击浏览上传的文件。总结

通过以上步骤,我们已在Flask应用中成功实现了文件上传功能。当然,实际项目中还需要考虑文件大小限制、文件重命名、文件类型检查等更复杂的场景,Flask-Uploads库同样提供了相应的方法和选项供我们使用。

关注我,手把手带你快速入门Python Web编程!

0 阅读:4