[Flask]上传多个文件到服务器
Flask上传多个文件
·
本文以图片文件为例,文件的数据量较大,不适合使用get的方式上传,故采用Post作为上传方式
1.构建一个HTML页面
在其中新建表单,其中包含Post事件和input按钮。在input按钮中添加multiple以开启其多选功能。
<form method="post" action="/register" enctype="multipart/form-data">
<input type="file" name="photo" multiple>
<button style="margin-top: 10px" type="submit">提交图片</button>
</form>
显示效果如下
2.编写路由展示上传页面
一个return render_template的事,代码就不做赘述了。
3.编写文件存储函数
这里就比较关键了。由于存在多个文件,需要使用一个for循环将表单中的文件全部解析出来。
同时常见的方法是采用时间戳作为文件名来防止文件重名,但是批量上传的文件是同一时间到达服务器的,仅采用时间戳命名会使其重名导致后面的文件覆盖前面的文件。所以在时间戳以外还需要加入一个序号标识来防止重名。
同时,这里也可以对文件大小,格式等信息进行限制。这里就不赘述了。
@app.route('/register', methods=['POST'])
def register():
i=0
for img in request.files.getlist('photo'):
suffix = '.' + img.filename.split('.')[-1] # 获取文件后缀名
img_path = './static/uploads/' + str(int(time.time())) +'_p'+str(i) + suffix # 拼接路径
img.save(img_path) #保存图片
print(img_path)
i=i + 1 #序号戳记++
return {'msg':'ok'}
效果拔群
更多推荐
所有评论(0)