如何以blob而不是字符串的形式接收AJAX响应?

时间:2017-04-03 20:43:33

标签: jquery python ajax file flask

我有以下AJAX调用,我用它从后端(运行Flask)获取Excel文件:

handleExport = (exportType) => {
    var formData = new FormData();
    formData.append("exportType", exportType);
    $.ajax({
        url: '/export',
        data: formData,
        contentType: false,
        processData: false,
        type: 'POST',
    }).done((data) => {
        console.log(data)
        FileSaver.saveAs(data, data.name);
    })
}

AJAX调用通过,但data方法中的done对象是一个字符串,而不是blob,这是我所期望的。对应于AJAX调用的烧瓶路线如下:

@app.route("/export", methods = ['POST'])
def export():
    userid = session['userid']
    export_type = request.form['exportType']
    export = get_export(db, userid, export_type)
    output = io.BytesIO()
    writer = pd.ExcelWriter(output, engine='xlsxwriter')
    export.to_excel(writer)
    writer.save()
    output.seek(0)
    return send_file(output, attachment_filename = "Promotions_Export.xlsx", mimetype='application/vnd.ms-excel', as_attachment = True)

0 个答案:

没有答案