html - 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 上看到文件的路径。
想法?
解决方案
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
推荐阅读
- php - Laravel 重定向到主域
- angular - 专注于显示错误消息的文本区域
- java - onActivityResult 没有被触发
- syntax - Dart中点前的问号
- apache-spark - 为 Spark DataFrame Array 类型创建单独的行
- substrate - 在 srml_support::storage::StorageMap 中,get() 和 take() 有什么区别
- amazon-web-services - 在 AWS 中部署 Talend Enterprise Edition 需要什么类型的 EC2 实例?
- android - 在android中处理materialsearchbar搜索结果
- javascript - Material UI中的TextField在选择后不会显示标签
- sql - 如何对sql中的特定列求和