14

我的 django 模型中有文件字段:

file=models.FileField(verbose_name=u'附件',upload_to='attachment/%Y/%m/%d',max_length=480)

该文件将显示在带有链接“http://test.com.cn/home/projects/89/attachment/2012/02/24/sscsx.txt”的网页中

我想要做的是当用户点击文件链接时,它会自动下载文件;谁能告诉我如何在视图中执行此操作?

提前致谢!

4

2 回答 2

27

您可以尝试以下代码,假设它object_name是该模型的对象:

filename = object_name.file.name.split('/')[-1]
response = HttpResponse(object_name.file, content_type='text/plain')
response['Content-Disposition'] = 'attachment; filename=%s' % filename

return response

请参阅 Django 文档中有关直接发送文件的以下部分:https ://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-文件附件

于 2012-02-27T11:09:30.357 回答
6

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.storage

将存储在数据库中的所有内容都是文件的路径(相对于 MEDIA_ROOT)。您很可能希望使用 Django 提供的便捷 url 功能。例如,如果您的 ImageField 名为 mug_shot,您可以使用 {{ object.mug_shot.url }} 在模板中获取图像的绝对路径。

于 2012-02-27T10:40:05.447 回答