flask 文件上传与接收
在做flask后端,有个需求是将视频从前端上传至后端,然后再页面播放上传的视频,记录下知识点。
文件流接收
1、前端传来的对象是二进制文件流,有两种方法保存本地。
(1)通过open()方法将文件流写入保存
(2)直接用调用 file.save() 方法保存传来的文件流:
from flask import Flask,request
app = Flask(__name__)
@app.route('/upload',methods = ['POST'])
def file_receive():
# 获取文件对象
file = request.files['file']
# 获取文件名
filename = file.filename
# file.save 也可保存传来的文件
# file.save(f'./{filename}')
with open(f'./{filename}','wb') as f:
f.write(file.stream.read())
return {'success':1}
if __name__ == '__main__':
app.run()
测试该段代码的文件上传可以用requests实现,用open()创建一个二进制对象,传给后端:
import requests
def uploads():
url = 'http://127.0.0.1:5000/upload'
files = {'file':open('C:\\Users\\xxx\\Desktop\\push\\test.mp4','rb')}
r = requests.post(url,files = files)
print(r.text)
if __name__=="__main__":
uploads()
2、如果既要传参数又要传文件呢,用 request.data 可以获取前端传来的参数:
from flask import Flask,request
app = Flask(__name__)
@app.route('/upload',methods = ['POST'])
def file_receive():
# 获取文件对象
file = request.files['file']
# 获取参数body
body = request.data
filename = file.filename
# file.save 也可保存传来的文件
# file.save(f'./{filename}')
with open(f'./{filename}','wb') as f:
f.write(file.stream.read())
return {'success':1}
if __name__ == '__main__':
app.run()
requests 测试代码:
import requests
def uploads():
url = 'http://127.0.0.1:5000/upload'
body = {'info':'test'}
files = {'file':open('C:\\Users\\xxx\\Desktop\\push\\test.mp4','rb')}
r = requests.post(url,json = body,files = files)
print(r.text)
if __name__=="__main__":
uploads()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2019-11-20 python 操作zookeeper详解