diff --git a/binder/views.py b/binder/views.py index c12c1760..d7396610 100644 --- a/binder/views.py +++ b/binder/views.py @@ -12,6 +12,7 @@ from PIL import Image from inspect import getmro +import base64 import django from django.views.generic import View @@ -2261,6 +2262,7 @@ def dispatch_file_field(self, request, pk=None, file_field=None): guess = mimetypes.guess_type(file_field.path) guess = guess[0] if guess and guess[0] else 'application/octet-stream' + try: resp = StreamingHttpResponse(open(file_field.path, 'rb'), content_type=guess) except FileNotFoundError: @@ -2272,6 +2274,16 @@ def dispatch_file_field(self, request, pk=None, file_field=None): if 'prefix' in request.GET: filename = request.GET['prefix'] + ' - ' + filename resp['Content-Disposition'] = 'attachment; filename="{}"'.format(filename) + + elif 'encode' in request.GET: + with open(file_field.path, 'rb') as file_data: + header = bytes(f"data:{guess};base64,", encoding='utf-8') + data = file_data.read() + encoded_data = base64.b64encode(data) + + return HttpResponse(header+encoded_data) + + return resp if request.method == 'POST':