2013-12-10 104 views
0

我使用一个简单的视图类来强制下载文件的pk。文件下载名称出来是PK。我希望它是原始文件名,就像它在服务器上一样。 我该怎么做?Django下载的文件名

*进出口新的Django的

这里的视图的代码

class GetFileContent(View): 
def get(self,request, userName, pk): 
    user = User.objects.filter(username = userName) 
    filtered = File.objects.filter(pk = pk, published=True, file_owner = user) 
    data = filtered[0].content 
    return HttpResponse(data, content_type='application/force-download') 
    pass 
+0

除了Simeons的回答,我还建议通过mod_xsendfile传递文件,如果你使用apache并有root权限来配置它。 – Jingo

+0

我使用Amazon s3 –

回答

4

您需要设置文件名的响应:

response = HttpResponse(data, content_type='application/force-download') 
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename) 
return response 

你需要想出一个办法以确定所需的文件名(例如,通过将其存储在数据库中以及查找)。