将烧瓶中具有其他表单元素的文件上传失败,并出现400错误

时间:2019-08-19 07:05:17

标签: python html file flask

获取400,尝试上传文件广告时,将其他表单元素从html发送到flask。试图使用ajax,但这也会引发一个错误。

Python:

@app.route('/prod_diff_result', methods=['POST', 'GET'])
def prod_diff_result():

    try:
         host = request.form['host-prod-iterator']
         print(host)
         if request.files['file']:
            f = request.files['file']
            f.save(secure_filename(f.filename))

HTML:

<div class="main-div">
    <form action="/prod_diff_result" method="POST" enctype="multipart/form-data">
        <div class="grid-container">
            <div class="grid-item">
                <span class="label label-default ">PROD</span><br>
                <p>Iterator Host : <input type="text" class="form-control" id="host-prod-iterator" value="10.47.7.57"
                        required></p>

                <input type="radio" name="data_fetch_type" value="file" onclick="showfile()">Upload File
                <input type="file" name="file" />
                <input type="radio" name="data_fetch_type" value="db"> Get from DB
                <input type="submit" />
            </div>
    </form>
</div>

我希望能够在一种请求中使用一种形式将主机名和文件发送回flask错误。

1 个答案:

答案 0 :(得分:1)

它给出了一个错误,因为您尝试访问它找不到的表单字段,并认为该请求是不正确的,因为该请求不包含必需的表单字段。您正在尝试访问:

host = request.form['host-prod-iterator']

但是,您根本没有在HTML中给它命名。如果您给它一个name,它应该可以工作:

<p>Iterator Host : 
    <input type="text" class="form-control" name="host-prod-iterator" id="host-prod-iterator" value="10.47.7.57" required>
</p>