0
我已经搜索了高和低的答案这个问题,我在我的智慧结束。使用多部分/表单数据导致400服务器错误使用瓶,wfastcgi,IIS 6
我正在使用IIS 6在Windows Server 2008上运行一个小型Web服务。该Web服务是使用Flask以Python编写的,而且我正在使用WSGI来连接IIS和Flask。直到我决定允许上传图片为止,它一直工作正常。只要我把enctype="multipart/form-data"
一个<form>
标签内,任何试图提交表单导致400服务器错误说
坏请求
浏览器(或代理)发送的请求,该服务器可以不明白。
我搜索了互联网,似乎没有人有过我的特殊问题。有问题的形式看起来像
<form method="POST" action="/log?case={{ CASE.id }}" enctype="multipart/form-data">
<input type="hidden" name="case_id" value="{{ CASE.id }}">
<textarea rows="3" cols="75" name="comment"></textarea><br>
Case Status:
{% if CASE.status=="Closed" %}
<select name="status">
<option value="Parked">Parked</option>
<option value="Closed" SELECTED>Closed</option>
<option value="Open" >Open</option>
</select>
{% elif CASE.status=="Open" %}
<select name="status">
<option value="Parked">Parked</option>
<option value="Closed" >Closed</option>
<option value="Open" SELECTED>Open</option>
</select>
{% elif CASE.status=="Parked" %}
<select name="status">
<option value="Parked" SELECTED>Parked</option>
<option value="Closed">Closed</option>
<option value="Open">Open</option>
</select>
{% else %}
<select name="status">
<option value="Parked">Parked</option>
<option value="Closed">Closed</option>
<option value="Open" SELECTED>Open</option>
</select>
{% endif %}
<br>
Computer Location:
{% if CASE.location=="Owner" %}
<select name="location">
<option value="Storage" >Storage</option>
<option value="Owner" SELECTED >Owner</option>
</select>
{% elif CASE.location=="Storage" %}
<select name="location">
<option value="Owner" >Owner</option>
<option value="Storage" SELECTED>Storage</option>
</select>
{% endif %}
<br>
<input type="file", name="image">
<br />
<input type="submit" name="submit" value="Submit">
</form>
和请求处理程序看起来像
def handleCaseComment(form, files, case_id):
# def handleCaseComment(form, case_id):
# create SQLAlchemy session
sess = db.session
# get case comment information
comment = form['comment']
status = form['status']
location = form['location']
image = form['image']
if image == "":
image = None
username = session['username']
technician = Technician.query.filter_by(username=username).first()
case = Support_Request.query.filter_by(id=case_id).first()
# create the case comment
caseComment = Case_Comment(author=technician,
content=comment,
comp_loc=location,
comp_status=status,
case=case,
image=image)
sess.add(caseComment)
sess.commit()
太谢谢你了!
首先,服务器告诉浏览器,它是**浏览器**错误,而不是服务器错误。 400错误单方面意味着“嘿,浏览器,你搞砸了。”这不是内部破坏的情况,比如访问'None'变量的字段,或者除以0。现在,你的意图是?可能不会,我怀疑这是在某个地方启用过滤器的简单问题。你有没有尝试过任何调试语句?它有没有得到你的请求处理程序? – hunteke