仅用于自己做笔记,如有错误欢迎指出
对于flask request获取参数的总结
客户端发送请求给服务器,发送的就是这个Request对象,Request对象里面包含了我们要发送给服务器的很多东西。
我们客户端发送了请求给服务器,那么这个request对象就发送过去了。服务器那边就接收到了这个request,那么就可以使用一系列方法读取这个request对象中的内容(比如使用request.method 显示它用GET还是POST方式提交的,使用request.path 查看它请求的路径是什么)。但如果浏览器没有发送请求,那么在服务器端,你去使用request.method这些方法就会报错,因为这些方法需要客户端发送过来请求才能执行。
request请求分为两类
1.get请求:访问时会在地址栏直接显示参数不安全,且参数大小比较小
2.post请求:参数不显示在地址栏,一般用户注册、登录都通过post请求完成
flask获取参数方式
Tables | Are | 结果 |
---|---|---|
request.form | 获取参数字典 | |
request.form.get(键) | 获取字典中键的值 | |
request.args.getlist(键) | 获取字典中键的值 | |
request.files | 接收文件字典 | |
request.files.get(键) | 获取文件字典中的内容 | |
文件对象=request.files.get(键) 文件对象.save(保存路径) | 保存文件到本地,方式一 | |
with open(路径,'wb') as f:内容 = 文件对象.read()f.write(内容) | 保存文件到地址,方式二 | |
文件对象.name 文件对象.content_length | 文件的名字与大小 | |
flask.request.method | 请求方式 | GET/POST |
flask.get_data() | 获取post参数 | 注:如果是form表单提交的POST数据请使用request.form |
args = request.get_json() | 获取postjson参数 | get_json() 会自动将json数据转换为字符串,还有POST请求需要设置请求头发送参数为application/json格式,才可以接收到。如果没有设置成json格式发送,请使用get_data接收参数 |
接收文件:request.files
浏览器端2.html
<form action="" enctype='multipart/form-data' method='POST'>
<input type="file" name="file" style="margin-top:20px;"/>
<input type="submit" value="上传" class="button-new" style="margin-top:15px;"/>
</form>
服务端(flask)
@app.route('/zly/speech/api', methods=['POST', 'GET']) # 添加路由
def upload():
# 检测语音是否上传成功
if request.method == 'POST':
if 'file' not in request.files:
return redirect(request.url)
f = request.files['file']#通过file标签获取录音
测试demo(客户端)
def RequestApi():
upload_file_path=r"test.wav"
file_object = {'file':open(upload_file_path, 'rb')}#print("file_object",file_object) {'file': <_io.BufferedReader name='test.wav'>}
response = requests.post(lfasr_host + speech_api, files=file_object)
print(response.text) #{"result": "很高兴认识你"}
request.form.get()
服务端
if request.method == 'POST':
f = request.form.get('file')#通过file标签获取录音 print("f:",f)# f: UklGRiTiBABXQVZFZm10IBAAAAABAA
base64编码解码
file2_path = "file2.wav"
with open(file2_path, 'wb') as file2:
file2.write(base64.b64decode(f))#解码
file2.close()#写入文件完成后需要关闭文件才能成功写入
upload_file_path="test.wav"
file = open(upload_file_path,"rb").read()
text = base64.b64encode(file)#对读取的文件进行base64编码
网友评论