我有一个PDF文件在我的媒体目录,我希望用户下载,问题是,我怎么能让用户看到文件的大小,让他们知道他们想要下载的大小。
另外,它是更好地创建一个模型的pdf文件如下所示,在models.py?什么是最好的方法来处理这一点。我需要帮助。
models.py现在不是我代码的一部分)
class PersonalStatement(models.Model):
personal_statement = models.FileField(upload_to='personal_statement/')
title = models.CharField(max_length=50)
字符串
views.py
def personal_statement_download(request):
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
filename = 'Writing-a-Personal-Statement.pdf'
filepath = BASE_DIR + '/media/personal_statement/' + filename
path = open(filepath, 'rb')
mime_type, _ = mimetypes.guess_type(filepath)
response = HttpResponse(path, content_type=mime_type)
response['Content-Disposition'] = "attachment; filename=%s" % filename
return response
型
url.py
path('personal_statement/download/', views.personal_statement_download,name='personal_statement_download'),
型
templates/index.html
<a href="{% url 'personal_statement_download'%}" class="applyRightContentContainerSubDownloadLink"> Download File ⇩</a>
型
views.py for index.html
def home (request):
return render(request, 'core/index.html')
型
2条答案
按热度按时间fd3cxomn1#
我认为
personal_statement_download
没有多大意义:Django通常不提供媒体文件或静态文件。事实上,这些文件通常由Nginx或Apache等Web服务器提供,因为它可能(很多)更有效,更安全。但无论如何,我们可以通过以下方式获得文件的大小:
字符串
然后我们可以使用**
|filesizeformat
**模板过滤器[Django-doc]来正确格式化文件大小:型
通过使用
{% get_media_prefix %}
,我们可以让web服务器处理文件下载。在调试模式下,Django还提供媒体文件,如果你将其添加到路径中。1qczuiv02#
你可以使用“os”来实现:
字符串
为了将它提供给前端,只需通过上下文给予它,就像这样:
型
来源:https://www.digitalocean.com/community/tutorials/how-to-get-file-size-in-python
编辑:
就像@willeM_货车Onsem在他的评论中说的那样,你可能想把你的文件名改成这样:
型