使用flask上传两个不同位置的文件

时间:2016-01-24 05:10:35

标签: python flask

我尝试将两个文件上传到两个不同的位置,但在上传文件时,我收到此错误" 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

烧瓶代码

+

请帮帮我!

1 个答案:

答案 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">

这是错误请求的原因。

我假设您已导入所有必需的模块和功能,例如uuidsecure_filename等,但是,您并没有正确保存文件。使用imagefile.save()memimagefile.save(),而不是file.save()

此外,由于两个文件可以同时上传,并且因为存在应该运行的数据库代码,因此在保存文件后不应return

最后,您的代码假定表单字段始终存在于表单中。如果缺少某个代码,则代码将失败并显示KeyError