From 9db9a13664dd4a918f4e150781d551872153d349 Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Tue, 28 Jul 2026 11:40:15 +0300 Subject: [PATCH 1/8] Add inline file preview with syntax highlighting --- files/urls.py | 1 + files/views.py | 25 +++++++++++++ main/settings.py | 2 ++ templates/base.html | 2 ++ templates/files/drive.html | 3 ++ templates/files/preview.html | 68 ++++++++++++++++++++++++++++++++++++ 6 files changed, 101 insertions(+) create mode 100644 templates/files/preview.html diff --git a/files/urls.py b/files/urls.py index fe2b4a4..e3b17ab 100644 --- a/files/urls.py +++ b/files/urls.py @@ -9,6 +9,7 @@ path("upload/files/", views.upload_files, name="upload_files"), path("upload/folder/", views.upload_folder, name="upload_folder"), + path("files//view", views.preview_file, name="file_preview"), path("files//download", views.download_file, name="file_download"), path("files//delete", views.delete_file, name="file_delete"), diff --git a/files/views.py b/files/views.py index 183350f..111bc63 100644 --- a/files/views.py +++ b/files/views.py @@ -7,6 +7,7 @@ from django.http import HttpResponse, FileResponse, Http404 from .models import Folder, File from .utils import add_folder_to_zip +from django.conf import settings @login_required def drive(request, folder_id=None): @@ -65,6 +66,30 @@ def upload_folder(request): return redirect("files:drive_folder", folder_id=root_folder.id) if root_folder else redirect("files:drive") +@login_required +def preview_file(request, pk): + file = get_object_or_404(File, pk=pk, owner=request.user) + + context = { + "file": file, + "content": None, + "too_large": False, + "error": None, + } + + if file.size > settings.MAX_PREVIEW_SIZE: + context["too_large"] = True + else: + try: + with file.file.open("rb") as file: + file.seek(0) + raw = file.read() + context["content"] = raw.decode("utf-8") + except Exception: + context["error"] = "Unable to read this file." + + return render(request, "files/preview.html", context) + @login_required def download_file(request, pk): file = get_object_or_404(File, pk=pk, owner=request.user) diff --git a/main/settings.py b/main/settings.py index d23bcb8..1dc7ac3 100644 --- a/main/settings.py +++ b/main/settings.py @@ -191,3 +191,5 @@ DISCORD_BOT_USERNAME = os.getenv("DISCORD_BOT_USERNAME") DISCORD_WEBHOOK_URL = os.getenv("DISCORD_WEBHOOK_URL") + +MAX_PREVIEW_SIZE = 5 * 1024 * 1024 diff --git a/templates/base.html b/templates/base.html index 1e7cf34..056d876 100644 --- a/templates/base.html +++ b/templates/base.html @@ -11,6 +11,8 @@ + {% block extra_head %}{% endblock extra_head %} + +{% endblock extra_head %} + +{% block content %} +
+
+ + + +

+ + {{ file.name }} + {{ file.size|file_size }} +

+
+ + Download + +
+ +
+ + {% if content is not None %} +
+
{{ content }}
+
+ {% elif too_large %} +
+ +

This file is too large to preview ({{ file.size|file_size }}).
Maximum preview size is 5 MB.

+ + Download instead + +
+ {% elif error %} +
+ +

{{ error }}

+ + Download instead + +
+ {% endif %} + + + + +{% endblock content %} From 31a63ee132dfb565386be732c7959989d1fb58ac Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Wed, 29 Jul 2026 10:23:22 +0300 Subject: [PATCH 2/8] Add image preview --- files/views.py | 13 ++++++++++++- templates/files/preview.html | 14 ++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/files/views.py b/files/views.py index 111bc63..50d8bc2 100644 --- a/files/views.py +++ b/files/views.py @@ -1,4 +1,6 @@ +import base64 import zipfile +import mimetypes from io import BytesIO from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required @@ -72,11 +74,16 @@ def preview_file(request, pk): context = { "file": file, + "file_type": "text", "content": None, "too_large": False, "error": None, } + mime_type, _ = mimetypes.guess_type(file.name) + if mime_type and mime_type.startswith("image/"): + context["file_type"] = "image" + if file.size > settings.MAX_PREVIEW_SIZE: context["too_large"] = True else: @@ -84,7 +91,11 @@ def preview_file(request, pk): with file.file.open("rb") as file: file.seek(0) raw = file.read() - context["content"] = raw.decode("utf-8") + if context["file_type"] == "image": + encoded = base64.b64encode(raw).decode("utf-8") + context["content"] = f"data:{mime_type};base64,{encoded}" + else: + context["content"] = raw.decode("utf-8") except Exception: context["error"] = "Unable to read this file." diff --git a/templates/files/preview.html b/templates/files/preview.html index 636a0ae..e2b3380 100644 --- a/templates/files/preview.html +++ b/templates/files/preview.html @@ -38,10 +38,16 @@


- {% if content is not None %} -
-
{{ content }}
-
+ {% if content %} + {% if file_type == 'text' %} +
+
{{ content }}
+
+ {% elif file_type == 'image' %} +
+ {{ file.name }} +
+ {% endif %} {% elif too_large %}
From d977bb5331ba653c8f3b9dfa81451bdb311dc511 Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Wed, 29 Jul 2026 10:25:52 +0300 Subject: [PATCH 3/8] Update MAX_PREVIEW_SIZE --- main/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/settings.py b/main/settings.py index 1dc7ac3..2af57d9 100644 --- a/main/settings.py +++ b/main/settings.py @@ -192,4 +192,4 @@ DISCORD_BOT_USERNAME = os.getenv("DISCORD_BOT_USERNAME") DISCORD_WEBHOOK_URL = os.getenv("DISCORD_WEBHOOK_URL") -MAX_PREVIEW_SIZE = 5 * 1024 * 1024 +MAX_PREVIEW_SIZE = 25 * 1024 * 1024 From 90cc36b8f8f3bcc4e2de9b12a23d59214405521f Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Wed, 29 Jul 2026 11:06:47 +0300 Subject: [PATCH 4/8] Add pdf preview --- files/urls.py | 1 + files/views.py | 32 ++++++++++++++++++++++++-------- templates/files/preview.html | 4 ++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/files/urls.py b/files/urls.py index e3b17ab..2d39c19 100644 --- a/files/urls.py +++ b/files/urls.py @@ -10,6 +10,7 @@ path("upload/folder/", views.upload_folder, name="upload_folder"), path("files//view", views.preview_file, name="file_preview"), + path('file//view/pdf/', views.preview_pdf, name='preview_pdf'), path("files//download", views.download_file, name="file_download"), path("files//delete", views.delete_file, name="file_delete"), diff --git a/files/views.py b/files/views.py index 50d8bc2..5432965 100644 --- a/files/views.py +++ b/files/views.py @@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required from django.contrib import messages from django.views.decorators.http import require_POST +from django.views.decorators.clickjacking import xframe_options_sameorigin from django.http import HttpResponse, FileResponse, Http404 from .models import Folder, File from .utils import add_folder_to_zip @@ -68,6 +69,16 @@ def upload_folder(request): return redirect("files:drive_folder", folder_id=root_folder.id) if root_folder else redirect("files:drive") +@login_required +@xframe_options_sameorigin +def preview_pdf(request, pk): + file = get_object_or_404(File, pk=pk, owner=request.user) + + response = FileResponse(file.file.open("rb"), content_type="application/pdf") + response["Content-Disposition"] = f'inline; filename="{file.name}"' + + return response + @login_required def preview_file(request, pk): file = get_object_or_404(File, pk=pk, owner=request.user) @@ -83,19 +94,24 @@ def preview_file(request, pk): mime_type, _ = mimetypes.guess_type(file.name) if mime_type and mime_type.startswith("image/"): context["file_type"] = "image" + elif mime_type == "application/pdf": + context["file_type"] = "pdf" if file.size > settings.MAX_PREVIEW_SIZE: context["too_large"] = True else: try: - with file.file.open("rb") as file: - file.seek(0) - raw = file.read() - if context["file_type"] == "image": - encoded = base64.b64encode(raw).decode("utf-8") - context["content"] = f"data:{mime_type};base64,{encoded}" - else: - context["content"] = raw.decode("utf-8") + if context["file_type"] == "pdf": + context["content"] = "use_inline_url" + else: + with file.file.open("rb") as file: + file.seek(0) + raw = file.read() + if context["file_type"] == "image": + encoded = base64.b64encode(raw).decode("utf-8") + context["content"] = f"data:{mime_type};base64,{encoded}" + else: + context["content"] = raw.decode("utf-8") except Exception: context["error"] = "Unable to read this file." diff --git a/templates/files/preview.html b/templates/files/preview.html index e2b3380..b8b51cf 100644 --- a/templates/files/preview.html +++ b/templates/files/preview.html @@ -47,6 +47,10 @@

{{ file.name }}
+ {% elif file_type == 'pdf' %} +
+ +
{% endif %} {% elif too_large %}
From 8f5e6d4d9868cfe9cba7186bb37a429e3f1e74fe Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Wed, 29 Jul 2026 11:36:28 +0300 Subject: [PATCH 5/8] Clean preview_file view --- files/views.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/files/views.py b/files/views.py index 5432965..544b7c2 100644 --- a/files/views.py +++ b/files/views.py @@ -96,24 +96,23 @@ def preview_file(request, pk): context["file_type"] = "image" elif mime_type == "application/pdf": context["file_type"] = "pdf" + context["content"] = True if file.size > settings.MAX_PREVIEW_SIZE: context["too_large"] = True - else: - try: - if context["file_type"] == "pdf": - context["content"] = "use_inline_url" + return render(request, "files/preview.html", context) + + try: + with file.file.open("rb") as file: + file.seek(0) + raw = file.read() + if context["file_type"] == "image": + encoded = base64.b64encode(raw).decode("utf-8") + context["content"] = f"data:{mime_type};base64,{encoded}" else: - with file.file.open("rb") as file: - file.seek(0) - raw = file.read() - if context["file_type"] == "image": - encoded = base64.b64encode(raw).decode("utf-8") - context["content"] = f"data:{mime_type};base64,{encoded}" - else: - context["content"] = raw.decode("utf-8") - except Exception: - context["error"] = "Unable to read this file." + context["content"] = raw.decode("utf-8") + except Exception: + context["error"] = "Unable to read this file." return render(request, "files/preview.html", context) From bcb6ea1bbd1b270b0b85998f077ca4652f1fc703 Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Wed, 29 Jul 2026 11:57:23 +0300 Subject: [PATCH 6/8] Add tests for preview_pdf and preview_file views --- files/tests/test_views.py | 131 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/files/tests/test_views.py b/files/tests/test_views.py index b78e909..d6e1bd9 100644 --- a/files/tests/test_views.py +++ b/files/tests/test_views.py @@ -478,3 +478,134 @@ def test_successful_deletion_of_root_folder(self): def tearDownClass(cls): shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) super().tearDownClass() + + +@override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT, MAX_PREVIEW_SIZE=25 * 1024 * 1024) +class PreviewFileViewTests(TestCase): + + def setUp(self): + self.client = Client() + + self.user1 = User.objects.create_user(username='user1', password='password123') + self.user2 = User.objects.create_user(username='user2', password='password123') + + self.text_file = File.objects.create( + file=SimpleUploadedFile("readme.txt", b"test content"), name="readme.txt", size=11, owner=self.user1 + ) + self.image_file = File.objects.create( + file=SimpleUploadedFile("photo.png", b"test content"), name="photo.png", size=8, owner=self.user1 + ) + self.pdf_file = File.objects.create( + file=SimpleUploadedFile("doc.pdf", b"test content"), name="doc.pdf", size=8, owner=self.user1 + ) + + def test_unauthenticated_user_redirects_to_login(self): + url = reverse('files:file_preview', kwargs={'pk': self.text_file.pk}) + response = self.client.get(url) + self.assertRedirects(response, f'/user/login/?next={url}') + + def test_user_cannot_preview_other_users_file(self): + self.client.login(username='user2', password='password123') + url = reverse('files:file_preview', kwargs={'pk': self.text_file.pk}) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) + + def test_preview_text_file(self): + self.client.login(username='user1', password='password123') + url = reverse('files:file_preview', kwargs={'pk': self.text_file.pk}) + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['file_type'], 'text') + self.assertEqual(response.context['content'], 'test content') + self.assertFalse(response.context['too_large']) + self.assertIsNone(response.context['error']) + + def test_preview_image_file(self): + self.client.login(username='user1', password='password123') + url = reverse('files:file_preview', kwargs={'pk': self.image_file.pk}) + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['file_type'], 'image') + self.assertTrue(response.context['content'].startswith('data:image/png;base64,')) + + def test_preview_pdf_file_type(self): + self.client.login(username='user1', password='password123') + url = reverse('files:file_preview', kwargs={'pk': self.pdf_file.pk}) + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['file_type'], 'pdf') + + @override_settings(MAX_PREVIEW_SIZE=5) + def test_too_large_file_returns_too_large_flag(self): + self.client.login(username='user1', password='password123') + url = reverse('files:file_preview', kwargs={'pk': self.text_file.pk}) + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertTrue(response.context['too_large']) + self.assertIsNone(response.context['content']) + + def test_nonexistent_file_returns_404(self): + self.client.login(username='user1', password='password123') + url = reverse('files:file_preview', kwargs={'pk': 99999}) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) + + @classmethod + def tearDownClass(cls): + shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) + super().tearDownClass() + + +@override_settings(MEDIA_ROOT=TEMP_MEDIA_ROOT) +class PreviewPdfViewTests(TestCase): + + def setUp(self): + self.client = Client() + + self.user1 = User.objects.create_user(username='user1', password='password123') + self.user2 = User.objects.create_user(username='user2', password='password123') + + self.pdf_file = File.objects.create( + file=SimpleUploadedFile("doc.pdf", b"test content"), name="doc.pdf", size=8, owner=self.user1 + ) + + def test_unauthenticated_user_redirects_to_login(self): + url = reverse('files:preview_pdf', kwargs={'pk': self.pdf_file.pk}) + response = self.client.get(url) + self.assertRedirects(response, f'/user/login/?next={url}') + + def test_user_cannot_preview_other_users_pdf(self): + self.client.login(username='user2', password='password123') + url = reverse('files:preview_pdf', kwargs={'pk': self.pdf_file.pk}) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) + + def test_successful_pdf_response_headers(self): + self.client.login(username='user1', password='password123') + url = reverse('files:preview_pdf', kwargs={'pk': self.pdf_file.pk}) + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response['Content-Type'], 'application/pdf') + + def test_successful_pdf_response_content(self): + self.client.login(username='user1', password='password123') + url = reverse('files:preview_pdf', kwargs={'pk': self.pdf_file.pk}) + response = self.client.get(url) + + self.assertEqual(b''.join(response.streaming_content), b"test content") + + def test_nonexistent_pdf_returns_404(self): + self.client.login(username='user1', password='password123') + url = reverse('files:preview_pdf', kwargs={'pk': 99999}) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) + + @classmethod + def tearDownClass(cls): + shutil.rmtree(TEMP_MEDIA_ROOT, ignore_errors=True) + super().tearDownClass() From 9afaff55b7525beb94104807918e34629ef60f75 Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Thu, 30 Jul 2026 08:53:52 +0300 Subject: [PATCH 7/8] Update features section [README] --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 33da4c1..73687ea 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ - [X] Upload **single files**, **multiple files** or entire **folders** with **drag & drop** support - [X] **Download files** with original filenames preserved +- [X] **Preview files** (text, images, PDFs) directly in the browser - [X] **Recursive folder downloads** as `.zip` archives - [X] Unlimited **nested folder hierarchy** support - [X] File and folder **search** From a0b58176a5fba13c1af4692cd507f4493b24dbee Mon Sep 17 00:00:00 2001 From: KafetzisThomas Date: Thu, 30 Jul 2026 08:59:21 +0300 Subject: [PATCH 8/8] Update demo images [README] --- README.md | 2 ++ assets/preview_file.png | Bin 0 -> 57814 bytes 2 files changed, 2 insertions(+) create mode 100644 assets/preview_file.png diff --git a/README.md b/README.md index 73687ea..6204b59 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ uv run manage.py test ![Folder Contents](/assets/folder_contents.png) +![Preview File](/assets/preview_file.png) + ![Search](/assets/search.png) ![Delete File](/assets/delete_file.png) diff --git a/assets/preview_file.png b/assets/preview_file.png new file mode 100644 index 0000000000000000000000000000000000000000..de61e715d6b40e78a7a993959832d6ad09db4526 GIT binary patch literal 57814 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%0D&G(M} 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 literal 0 HcmV?d00001