diff --git a/config/settings.py b/config/settings.py index 44ca711..527d475 100644 --- a/config/settings.py +++ b/config/settings.py @@ -99,9 +99,9 @@ STORAGES = { MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media' -# File upload limits -FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB -DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB +# File upload limits (no limit) +FILE_UPLOAD_MAX_MEMORY_SIZE = 10737418240 # 10GB +DATA_UPLOAD_MAX_MEMORY_SIZE = 10737418240 # 10GB DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/files/models.py b/files/models.py index a8869bb..9e9f853 100644 --- a/files/models.py +++ b/files/models.py @@ -37,8 +37,8 @@ class SharedSpace(models.Model): password_hash = models.CharField(max_length=128) is_active = models.BooleanField(default=True) max_file_size_mb = models.PositiveIntegerField( - default=100, - help_text="Maximum file size in MB for uploads" + default=0, + help_text="Maximum file size in MB for uploads (0 = unlimited)" ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) diff --git a/portal/templates/portal/shared_space/home.html b/portal/templates/portal/shared_space/home.html index a726f4c..5041db2 100644 --- a/portal/templates/portal/shared_space/home.html +++ b/portal/templates/portal/shared_space/home.html @@ -184,7 +184,7 @@
+

Drop files here or click to select

-

Max file size: {{ space.max_file_size_mb }}MB

+

{% if space.max_file_size_mb > 0 %}Max file size: {{ space.max_file_size_mb }}MB{% else %}No file size limit{% endif %}

@@ -210,7 +210,7 @@ const uploadZone = document.getElementById('uploadZone'); const fileInput = document.getElementById('fileInput'); const results = document.getElementById('results'); -const maxSize = {{ space.max_file_size_mb }} * 1024 * 1024; +const maxSize = {{ space.max_file_size_mb }} * 1024 * 1024; // 0 = unlimited // Click to select uploadZone.addEventListener('click', () => fileInput.click()); @@ -252,8 +252,8 @@ function formatBytes(bytes) { function uploadFile(file) { const itemId = 'upload-' + Date.now() + Math.random().toString(36).substr(2, 9); - // Check file size before upload - if (file.size > maxSize) { + // Check file size before upload (skip if unlimited) + if (maxSize > 0 && file.size > maxSize) { const item = document.createElement('div'); item.className = 'result-item error'; item.innerHTML = ` diff --git a/portal/templates/portal/upload.html b/portal/templates/portal/upload.html index dfb7e5e..e03dd0a 100644 --- a/portal/templates/portal/upload.html +++ b/portal/templates/portal/upload.html @@ -32,7 +32,7 @@
+

Drop files here to upload

or click to select files

-

Max file size: 100MB

+

No file size limit

diff --git a/portal/views_shared_space.py b/portal/views_shared_space.py index ebdba0c..5ca8d84 100644 --- a/portal/views_shared_space.py +++ b/portal/views_shared_space.py @@ -64,11 +64,12 @@ class SharedSpaceUploadAPIView(View): uploaded_file = request.FILES['file'] - max_size_bytes = space.max_file_size_mb * 1024 * 1024 - if uploaded_file.size > max_size_bytes: - return JsonResponse({ - 'error': f'File too large. Maximum size is {space.max_file_size_mb}MB' - }, status=400) + if space.max_file_size_mb > 0: + max_size_bytes = space.max_file_size_mb * 1024 * 1024 + if uploaded_file.size > max_size_bytes: + return JsonResponse({ + 'error': f'File too large. Maximum size is {space.max_file_size_mb}MB' + }, status=400) title = request.POST.get('title', '') or uploaded_file.name description = request.POST.get('description', '')