Django将文件作为字符串返回,而不是文件

时间:2015-07-27 19:12:52

标签: python django file download

我尝试以动态方式在excel电子表格中放入统计信息,所以当

excel.js

$('.js-excel').on('click', function () {
    $.get(
            '/ajax/stat_excel/',
            {
                'excel': 'loan',
                'date_from': $('#date_from').val(),
                'date_to': $('#date_to').val()
            }
    )
})

然后

view.py

output = StringIO.StringIO()
        workbook = xlsxwriter.Workbook(output)
        if request.GET.get('excel') == 'loan':
            workbook = loanChart.excel(workbook)
        if request.GET.get('excel') == 'debet':
            workbook = debetChart.excel(workbook)
        workbook.close()

        xlsx_data = output.getvalue()

        response = HttpResponse(xlsx_data, mimetype='application/vnd.ms-excel')
        response['Content-Type'] = 'application/vnd.ms-excel'
        response['Content-Disposition'] = 'attachment; filename=report.xlsx'

        return response

而且我不确定我做错了什么,因为回应就像

  

PKFAS] $ WXL /工作表/ sheet1.xml [oɑW| W +#> DX( {}引用%j $$   $ʞ8] C.QU //问:?| 77 炔^&LT =}杓

  1. Excel文件生成优秀。我可以看到,如果我不使用StringIO
  2. 我不确定,我需要使用什么,Mimetype或Content-Type。看不出有什么区别。无论我在回复中写哪种类型,工作方式都完全相同。
  3. 哪里可以成为我的问题?

1 个答案:

答案 0 :(得分:0)

在这里找到答案https://stackoverflow.com/a/4518775/4498908

我无法使用ajax进行文件下载。但我可以:

function download(path,val) {
    window.location.href = path+"download.php?val="+val;
};