Django,将文件附件作为HttpResponse返回,我可以获得文件大小吗?

Posted

技术标签:

【中文标题】Django,将文件附件作为HttpResponse返回,我可以获得文件大小吗?【英文标题】:Django, returning file attachment as HttpResponse, can I get file size? 【发布时间】:2013-05-29 21:27:28 【问题描述】:

我正在从网页返回一个 Excel .XLS 文件,例如:

xls_response = HttpResponse(mimetype='application/vnd.ms-excel')
xls_response['Content-Disposition'] = 'attachment; filename=funfile.xls'
.
.
<code to generate the file - already accomplished>
.
.
return xls_response

一切都很好,但我想在发送之前查看文件大小,以便显示上次下载时的文件大小。我已经有一个模型可以存储它,但我需要弄清楚如何在将文件返回给客户端之前从xls_response object 获取文件大小。除了二进制数据的len() 之外,有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

见下面的代码,记住 django 只是 python

from sys

sys.getsizeof(obj[, default]) #returns size of a python object.

http://docs.python.org/2/library/sys.html#sys.getsizeof

【讨论】:

谢谢,詹姆斯。你为我指明了正确的方向。由于某种原因,我不得不保存sys.getsizeof(xls_response.content),对象的大小不是其内容的完整大小,但HttpResonse.content 是。干杯!

以上是关于Django,将文件附件作为HttpResponse返回,我可以获得文件大小吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将路径字符串作为 django 文件字段的参数?

使用 Django 在 HTML 电子邮件模板中将图像作为内联附件发送

Django:在按钮按下时提供动态生成的数据作为附件

如何在Django中将pdf作为电子邮件附件发送

使用 django 通过模板管理 pdf 并作为电子邮件附件发送

Django项目的第1个应用