@login_required(login_url='signin') def upload_file(request): if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): file = request.FILES['file'] file_extension = os.path.splitext(file.name)[1] original_filename = file.name file_name = str(uuid.uuid4()) + file_extension file_path = os.path.join(settings.MEDIA_ROOT, 'media', file_name) with open(file_path, 'wb+') as destination: for chunk in file.chunks(): destination.write(chunk) upload_file = Upload.objects.create request.session['file_name'] = file_name request.session['original_filename'] = original_filename return redirect("download/") else: form = UploadForm() return render(request, 'filetransfer/upload.html', {'form': form}) def download_file(request, file_name): file_path = os.path.join(settings.MEDIA_ROOT,"media", file_name) if not os.path.exists(file_path): raise Http404 with open(file_path, "rb") as file: file_contents = file.read() response = HttpResponse(file_contents, content_type='application/force-download') response['Content-Disposition'] = f'attachment; filename="{file_name}"' return response def download_page(request): try: uploaded_file = Upload.objects.last() file_name = request.session.get('file_name') original_filename = request.session.get('original_filename') file_path=os.path.join(settings.MEDIA_ROOT,"media",file_name) download_url = request.build_absolute_uri(reverse('download', args=[file_name])) except Upload.DoesNotExist: download_url = None return render(request, 'filetransfer/download.html', {'download_url': download_url})how can i change the uuid name to original filename, so the file will be downloaded with it's original name?
Larz60+ write Jul-17-2023, 03:01 PM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Fixed for you this time. Please use BBCode tags on future posts.
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Fixed for you this time. Please use BBCode tags on future posts.