django-dbfilestorage/dbfilestorage/views.py

25 lines
771 B
Python
Raw Normal View History

from django.http import HttpResponse, Http404
from django.db.models import Q
from django.shortcuts import get_object_or_404
from .models import DBFile
def show_file(request, name):
"""
Get the file object referenced by :name:
Render the decoded base64 representation of the file,
applying the content_type (or closest representation)
:return HttpResponse: Rendered file
"""
dbf = DBFile.objects.filter(Q(name=name)|Q(filehash=name))
if dbf.exists():
response = HttpResponse(
dbf[0].b64.decode('base64'),
content_type=dbf[0].content_type)
response['Content-Disposition'] = 'attachment; filename="{}"'.format(
dbf[0].name)
return response
raise Http404