使用ajax将文件发布到flask url

时间:2013-12-01 08:13:12

标签: python jquery flask

我有一个javascript方法,它读取通过表单提交的输入文件,并尝试将其数据发布到一个烧录网址,该网址应该读取已发布的数据并返回一些修改。

HTML部分:

<form id="form_1">
    <input type="file" name="file_1" id="file_1">
    <input type="submit" value="submit" id="regan">
 </form>

JS部分:

$("#form_1").submit(function(e){
    e.preventDefault(e);

    var reader = new FileReader();
    var line_data = $('#file_1').get(0);

    if (line_data.files.length) {
        var input_file = line_data.files[0];
        reader.readAsText(input_file);
        $(reader).on('load', function(e){
            data_line = e.target.result;
            $.ajax({
                    url:'url/validate/',
                    type:'POST',
                    data:{akey: data_line},
                    success:function(returned_data){console.log(returned_data);},
                    error:function(){console.log('sorry...');}
            });

        });
    }

});

Flask / Python部分:

@app.route('/validate_line/')
def validate_line_data():

    try:
        data = request.form['akey']
    except:
        data = 'bad'

    data = str(data)

    return data+'was_received'

到目前为止,它在javascript中成功读取了提交的文本文件,但似乎它没有通过ajax post方法发布并给出错误url / validate / 405(METHOD NOT NOTOWED)。

任何帮助都会很棒。谢谢。

1 个答案:

答案 0 :(得分:3)

要让Flask接受POST请求,您需要在装饰器中指定:

@app.route('/validate_line/', methods=['POST'])

如果您希望它也接受GET请求,请转到

['GET', 'POST']