Django:文件未下载,但在浏览器中打开

时间:2018-07-14 15:38:00

标签: html django download

我有一个Django模型,该模型中有一个文件上传字段。我希望在单击网页时下载文件,但是,单击按钮时,它只是在浏览器中打开。 w3schools似乎很简单,但我无法正常工作。

HTML页面

{% if obj.document %}
    <td><a href="{{ obj.document.url }}" download>File</td>
 {% else %}

Models.py

@property
def document_url(self):
    if self.document and hasattr(self.document, 'url'):
        return self.document.url

如果我将{{ obj.document.url }}代替File,则会在AWS上看到文件的路径。

有想法吗?

1 个答案:

答案 0 :(得分:0)

</a>之后缺少File,但是如果它仍然不起作用:

根据您要提供的文件类型,似乎没有一种解决方案可以在每种浏览器中使用。

  • 您可以尝试将type="application/octet-stream"放在您的<a>标记中。
  • 您可以尝试在.htaccess中为您提供的所有文件类型添加以下类型的行:

    AddType application/octet-stream .pdf
    

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>
  • 自从您提到AWS以来,您似乎可以通过在Amazon S3中为文件设置正确的标头来强制下载这些文件。

    Content-Disposition: attachment; filename=FILENAME.EXT    
    Content-Type: application/octet-stream