我尝试将两个文件上传到两个不同的位置,但在上传文件时,我收到此错误" ValueError:View函数未返回响应"。我尝试了一切,但它没有运气。
html代码:
@app.route('/NewCases/', methods=['GET', 'POST'])
def NewCase():
try:
if request.method == 'GET':
return render_template('admin.html', DICT=DICT)
if request.method == 'POST':
idtest = str(uuid.uuid4())
idtestfilter = idtest.replace('-','')
adname= request.form['adminname']
casen = request.form['casename']
imagefile = request.files['imagefile']
memimagefile =request.files['memimagefile']
if imagefile > 0:
imagefilename = secure_filename(imagefile.filename)
file.save(os.path.join(UPLOAD_FOLDER , imagefilename))
return redirect(url_for('index'))
if memimagefile > 0:
imagefilename = secure_filename(memimagefile.filename)
file.save(os.path.join(UPLOAD_FOLDER , memimagefile))
return redirect(url_for('index'))
c, conn = connection()
c.execute("INSERT INTO cases(id,casename, adminname, imagepath, memimagepath) VALUES (%s, %s, %s, %s, %s)",
(thwart(idtestfilter),thwart(adname),thwart(casen),thwart(imagefilename),thwart(memfilename)))
conn.commit()
flash("case inserted!")
c.close()
conn.close()
flash('Cases successfully added')
return redirect(url_for('EditCase'))
except Exception as e:
error = e
烧瓶代码
+
请帮帮我!
答案 0 :(得分:2)
首先要指出的是,你的Python代码失败了,但你正在捕捉并忽略所有异常(好吧,几乎所有)。您的Python代码失败的主要原因是因为收到了错误的请求。你会知道,如果你没有抓住并忽略所有异常。至少打印一条消息,再次raise
例外。
无论如何,您正在上传文件,因此您需要将HTML表单的编码类型设置为multipart/form-data
,如下所示:
<form action="http://127.0.0.1:5000/" method=post enctype="multipart/form-data" class="form-horizontal">
这是错误请求的原因。
我假设您已导入所有必需的模块和功能,例如uuid
,secure_filename
等,但是,您并没有正确保存文件。使用imagefile.save()
和memimagefile.save()
,而不是file.save()
。
此外,由于两个文件可以同时上传,并且因为存在应该运行的数据库代码,因此在保存文件后不应return
。
最后,您的代码假定表单字段始终存在于表单中。如果缺少某个代码,则代码将失败并显示KeyError
。