【问题标题】:File Upload in Flask - 400 Bad RequestFlask 中的文件上传 - 400 错误请求
【发布时间】:2015-08-24 12:29:10
【问题描述】:

我正在尝试通过 JQuery 中的 AJAX 将文件上传到我的 Flask 后端。

我的 Python 端如下所示:

@app.route('/upload/', methods=['POST', 'GET'])
def upload():
    if request.method == 'GET':
        return render_template('uploadfile.html')
    elif request.method == 'POST':
        file_val = request.files['file']
        return 'it worked!'

请注意,当我正常提交表单时它会起作用。

我的 HTML 和 AJAX 如下所示:

<form id="upload-file" method="post" enctype="multipart/form-data">
<fieldset>
    <label for="file">Select a file</label>
    <input name="file" type="file">
</fieldset>
<fieldset>
    <button id="upload-file-btn" type="button">Upload</button>
</fieldset>

$(document).on("click", "#upload-file-btn", function() {
    var form_data = new FormData($('#input-file')[0]);
    $.ajax({
        type: 'POST',
        url: '/upload/',
        data: form_data,
        contentType: false,
        cache: false,
        processData: false,
        async: false,
        success: function(data) {
            alert("UREKA!!!");
        },
       error: function(jqXHR, textStatus, errorThrown) {
            console.log(jqXHR);
            console.log(textStatus);
            console.log(errorThrown);
        }
    });

    return false;
});

但是,在执行 AJAX 请求时,我收到了 400 响应。我认为这与 contentType 有关,但非常感谢任何指导:)

【问题讨论】:

  • Flask 本身会说什么吗? (正在调试吗?)

标签: jquery python ajax flask


【解决方案1】:

我没有看到任何具有此 ID $('#input-file') 的元素,我猜你想要表单的 ID 或只是 input[type="file"] 的 ID。

你可以试试这个:

var form_data = new FormData($('input[type="file"]')[0]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多