如何在django中下载FileField

时间:2014-05-06 16:32:54

标签: django download filefield

这是我的模特

class Informe(models.Model):
id_paciente = models.ForeignKey('Paciente')
id_medico = models.ForeignKey('Medico')
id_tecnico = models.ForeignKey('Tecnico')
contenido = models.FileField(upload_to='informes', verbose_name='informe')
def relative_path(self):
    os.path.realpath(self.path, settings.MEDIA_ROOT)

我很高兴下载保存在/files/informes中的txt文件。我可以毫无问题地获得模板中的url或路径,但不知道如何能够下载它。每当客户点击模板的链接时,我如何设法自动下载文件?

TIA!

2 个答案:

答案 0 :(得分:0)

您无法强制用户浏览器自动下载txt文件。大多数浏览器都会打开txt文件以便在浏览器中查看。客户端可以更改浏览器设置以下载txt文件,而不是在浏览器中查看。

以下是对此的更深入的帖子:

http://www.htmlhelp.com/faq/html/links.html#force-download

答案 1 :(得分:0)

我在Django文档中找到了这个:

  

告诉浏览器将响应视为文件附件

     

要告诉浏览器将响应视为文件附件,请使用   content_type参数并设置Content-Disposition标头。对于   例如,这是您返回Microsoft Excel电子表格的方式:

     
    
      

response = HttpResponse(my_data,content_type ='application / vnd.ms-excel')       response ['Content-Disposition'] ='附件;文件名= “foo.xls”'

    
  

https://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment