From 8720ee7dac391f34c2b5b11ee9a9f019859b0648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bmate711@gmail.com> Date: Tue, 4 Feb 2020 23:02:48 +0100 Subject: [PATCH] Create api endpoint for download document --- src/document/views.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/document/views.py b/src/document/views.py index 1adb118..3744e3b 100644 --- a/src/document/views.py +++ b/src/document/views.py @@ -3,7 +3,9 @@ from common import permissions from . import models from . import serializers from rest_framework.parsers import JSONParser, MultiPartParser - +from django.http import HttpResponse, Http404 +from rest_framework.decorators import action +import os class DocumentViewSet(viewsets.ModelViewSet): serializer_class = serializers.DocumentSerializer @@ -43,3 +45,12 @@ class DocumentViewSet(viewsets.ModelViewSet): } serializer.save(**kwargs) + + @action(detail=True, methods=["get"]) + def download(self, request, pk): + document = self.get_object() + with document.file.open() as fh: + response = HttpResponse(fh.read(), content_type="application/media") + response['Content-Disposition'] = 'inline; filename=' + os.path.basename(document.file.name) + return response + raise Http404 -- GitLab