首页 > 解决方案 > Django:文件未下载,但在浏览器中打开

问题描述

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

网页

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

模型.py

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

如果我把{{ obj.document.url }}而不是File我在 AWS 上看到文件的路径。

想法?

标签: htmldjangodownload

解决方案


a</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
    

推荐阅读