我的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"
我想做的是,当用户点击文件链接时,它会自动下载文件;有人能告诉我怎么做吗?
提前感谢!
您可以尝试以下代码,假设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-浏览器处理-响应即文件附件
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}}在模板中获取图像的绝对路径。