如何在django视图中下载文件域文件

Ang*_*lia 11 django download filefield

我的django模型中有filefield:

file=models.FileField(verbose_name=u'??',upload_to='attachment/%Y/%m/%d',max_length=480)
Run Code Online (Sandbox Code Playgroud)

该文件将与链接"http://test.com.cn/home/projects/89/attachment/2012/02/24/sscsx.txt" WEB页面显示器

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

提前致谢!

Vic*_*Neo 20

您可以尝试以下代码,假设它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
Run Code Online (Sandbox Code Playgroud)

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

  • 您还可以使用os.path.basename来过滤文件名,而不是使用.split('/').例如.`filename = os.path.basename(object_name.file.name)`.无论操作系统如何,这都可以. (5认同)

jpi*_*pic 5

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

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