我用form表单进行html数据的提交,然后Flask这边用request.form进行读取。我只想要第二个dict里的内容,我好提取key为name的值,但是第一个怎么把它去掉呢或者不影响我程序的执行。现在这个src是这两个字典,而不是一个
我的html代码如下:
<form action="{{url_for('handleLocal')}}" method="post">
<input class="uploadImg file1" type="file" name="file1" id="EmployeePicture" hidden accept="image/*" onchange="showImgToView('EmployeePicture')"/>
<button class="button1" id="submitLocalFile" type="submit" onclick="transmit()" ><span>预测</span></button>
这里的input是用来上传图片的,我后端并不怎么需要它。
我需要的是图片的src,所以我写了个在button提交的function
function transmit() {
var transmit_content=$('#change_Image')[0].src;
$.ajax({
url: "{{url_for('handleLocal')}}",
data: {name: transmit_content},
type: "POST",
//dataType: "json",
});
}
然后是Flask部分代码:
@app.route('/handleLocal',methods=['POST'])
def handleLocal():
** src=request.form.get('name')**
data=src[23:-1]
img_data=base64.b64decode(data+"=")
问题就出在 handleLocal函数中 src=request.form会返回两个字典,我如果get的话一个结果是none,一个结果是我想要的src属性
请教大家如何解决这个问题
问题原因分析:
1、form 指定了 action 方法,这个表单提交的时候只有一个参数 file1 。
2、提交按钮绑定的事件又发送了一次请求,此时只有一个 name 属性,那么可否调整一下:
第一,去掉 form 的action 地址,由 submit 按钮的 onclick 方法来提交请求。
第二, onclick 方法提交的 post 请求参数,后台直接取 name 就可以了。
另外,如果用Action 的话,其实是可以直接获取到文件表单的:
equest.files.get("filename")来获取单个文件。表单提交肯定是可以取到文件的。