Django服务.XLSX文件和强制下载

时间:2015-08-21 12:51:44

标签: python django

我目前正在使用openPYXL在Django中打开模板文件

    module_dir = os.path.dirname(__file__)  # get current directory
file_path = os.path.join(module_dir, fileName)
username = request.user.username
workbook = load_workbook(file_path)
worksheet = workbook.active

然后编辑文件,并以不同的名称保存(这很好,我可以打开创建的文件,它包含所需的信息),但我正在努力的是为用户提供此文件,我已经尝试了各种技术,如下所示

workbook.save('EvalofSelf1.xlsx')
response = HttpResponse()
file_path = os.path.join(os.path.dirname(os.path.realpath(__name__)), 'EvalofSelf1.xlsx')
response['X-Sendfile'] = file_path
response['Content-Type'] = 'mimetype/submimetype'
response['Content-Disposition'] = 'attachment; filename=%s.xlsx' % 'DownloadedEval'

所有这些文件都按要求提供文件,但文件中没有实际数据,大小为0kb且无法打开,如何从Django项目目录中提供创建的文件,保留存储在其中的所有信息?

1 个答案:

答案 0 :(得分:4)

您永远不会将文件内容放入响应中,因此它自然是0字节。 X-Sendfile用于完全不同的目的 - 当您重定向到静态服务器时 - 无论如何都需要URL,而不是文件路径。

file_path = os.path.join(os.path.dirname(os.path.realpath(__name__)), 'EvalofSelf1.xlsx')
response = HttpResponse(open(file_path, 'rb').read())
response['Content-Type'] = 'mimetype/submimetype'
response['Content-Disposition'] = 'attachment; filename=DownloadedEval.xlsx'