From 8c5985aacf5e831e2bde78d6e05d4369fad67564 Mon Sep 17 00:00:00 2001 From: ApexArray <91706106+ApexArray@users.noreply.github.com> Date: Fri, 22 Dec 2023 10:37:25 -0700 Subject: [PATCH] gcode downloads --- backend/app/views/web_views.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/app/views/web_views.py b/backend/app/views/web_views.py index 34cdf17ab..49901fae1 100644 --- a/backend/app/views/web_views.py +++ b/backend/app/views/web_views.py @@ -1,3 +1,4 @@ +import mimetypes import os from binascii import hexlify import re @@ -249,10 +250,16 @@ def serve_jpg_file(request, file_path): return HttpResponseForbidden("You do not have permission to view this media") full_path = os.path.join(settings.MEDIA_ROOT, file_path) + # Determine content type based on file extension + content_type = mimetypes.guess_type(file_path)[0] + # Content type is not guessed correctly for files without extensions (i.e. for gcode files), so we set the + # content_type to octet-stream, which initiates a download in the user's browser. + if content_type is None: + content_type = "application/octet-stream" if not os.path.exists(full_path): raise Http404("Requested file does not exist") with open(full_path, 'rb') as fh: - return HttpResponse(fh, content_type=('video/mp4' if file_path.endswith('.mp4') else 'image/jpeg')) + return HttpResponse(fh, content_type=content_type) # Health check that touches DB and redis