Django定义要服务的文件的名称

时间:2014-07-22 20:36:24

标签: python django django-views

我写了一个允许用户下载文件的代码。这是代码:

def download_file(request, ref):
    filepath = "/home/jedema/code_"+ref+".txt"
    filename = os.path.basename(filepath)
    final_filename = "code.txt"
    return serve(request, filename, os.path.dirname(filepath))

我想定义用户将下载的文件名。目前,下载文件的名称是我的域名后面的URL。

您知道如何定义用户下载的文件名吗?

1 个答案:

答案 0 :(得分:2)

您需要在回复中设置Content-Disposition标头。首先,您不应使用serve()视图来传递文件,因为只有设置了DEBUG = True,它才有效。

看看Django Docs类似下面的内容应该做的诀窍

def download_file(request, ref):
    filepath = "/home/jedema/code_"+ref+".txt"
    filename = os.path.basename(filepath)
    final_filename = "code.txt"
    with open(filepath) as f:
        response = HttpResponse(f.read(), content_type='text/plain')
        response['Content-Disposition'] = 'attachment; filename="%s"' % final_filename
    return response

我没有测试过,但它应该是正确方向的暗示