网站首页 > 技术文章 正文
在开发Web应用时,文件上传功能是非常常见且重要的需求。今天,我们将通过Python Flask框架结合Flask-Uploads库,实现文件上传功能,并提供详尽的代码示例。
安装Flask-Uploads
首先确保已安装Flask和Flask-Uploads库:
pip install Flask Flask-Uploads
初始化Flask应用与Flask-Uploads
from flask import Flask, render_template, request
from flask_uploads import UploadSet, configure_uploads, IMAGES, ALL
app = 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编程!
猜你喜欢
- 2024-10-15 Python Flask Web表单(flask form表单)
- 2024-10-15 如何在Flask应用程序中使用JSON Web Tokens进行安全认证
- 2024-10-15 综合指南:将 Flask 与 MongoDB 结合使用
- 2024-10-15 python-flask搭建平台,HTML+CSS+JS写前端的web全栈-动画轮播
- 2024-10-15 Flask 表单处理(flask formdata)
- 2024-10-15 三、flask博客项目实战-之表单(flask 表单)
- 2024-10-15 flask python web开发的简单易学框架
- 2024-10-15 Flask-APScheduler使用教程(flask apscheduler)
- 2024-10-15 flask 项目中使用 bootstrapFileInput(进阶篇)
- 2024-10-15 基于flask框架展示数据可视化的一次尝试
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)