我一直在寻找这个问题的答案,而我的智慧已到了尽头。
我正在使用IIS 6在Windows 2008上运行一个小型web服务。web服务是用Python编写的,使用Flask编写,我使用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()非常感谢!
发布于 2017-10-25 02:09:55
简单的旧javascript,但这里是一个功能HTTP请求从javascript到烧瓶。刚刚测试过了。我使用它上传图像,然后将这些图像的缩略图上传回浏览器。
document.getElementById(configureFileDrops[0]).addEventListener('drop',function(event){
files = event.dataTransfer.files;
form = new FormData();
form.append("index", "1");
for (i = 0; i <files.length; i++){
form.append("file" + String(i), files[i]);
}
form.enctype = "multipart/form-data"
var xmlhttp = new XMLHttpRequest();
xmlhttp.responseType = 'arraybuffer';
xmlhttp.onreadystatechange = function (){
if (xmlhttp.readyState ===4 && xmlhttp.status === 200) {
//use response here
};
xmlhttp.open("POST", '<insert route>', true);
xmlhttp.send(form);
},false);https://stackoverflow.com/questions/46761979
复制相似问题