Add custom file upload
This commit is contained in:
parent
680de724ba
commit
44c4795282
3 changed files with 61 additions and 0 deletions
43
judge/views/custom_file_upload.py
Normal file
43
judge/views/custom_file_upload.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
from django.shortcuts import render
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from django import forms
|
||||
from django.utils.translation import gettext as _
|
||||
from django.conf import settings
|
||||
from django.http import Http404
|
||||
|
||||
import os
|
||||
import secrets
|
||||
from urllib.parse import urljoin
|
||||
|
||||
MEDIA_PATH = "uploads"
|
||||
|
||||
|
||||
class FileUploadForm(forms.Form):
|
||||
file = forms.FileField()
|
||||
|
||||
|
||||
def file_upload(request):
|
||||
if not request.user.is_superuser:
|
||||
raise Http404()
|
||||
file_url = None
|
||||
if request.method == "POST":
|
||||
form = FileUploadForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
file = request.FILES["file"]
|
||||
random_str = secrets.token_urlsafe(5)
|
||||
file_name, file_extension = os.path.splitext(file.name)
|
||||
new_filename = f"{file_name}_{random_str}{file_extension}"
|
||||
|
||||
fs = FileSystemStorage(
|
||||
location=os.path.join(settings.MEDIA_ROOT, MEDIA_PATH)
|
||||
)
|
||||
filename = fs.save(new_filename, file)
|
||||
file_url = urljoin(settings.MEDIA_URL, os.path.join(MEDIA_PATH, filename))
|
||||
else:
|
||||
form = FileUploadForm()
|
||||
|
||||
return render(
|
||||
request,
|
||||
"custom_file_upload.html",
|
||||
{"form": form, "file_url": file_url, "title": _("File Upload")},
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue