Search code examples
djangopdf-generationreportlab

how to prompt user to save a pdf file to his local machine in django?


I am fairly new to Django and my project requires me to prompt user to open a pdf upon clicking a link. I already have the pdf file on my local machine and dont want to recreate it using Reportlab. Is there any way to do it?

I tried

with open("/user/some/directory/somefilename.pdf") as pdf:
        response = HttpResponse(pdf, content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
        return response

but it returned 404 page not found as the requested url wasn't in the URLconf of myproject.urls

What am I missing?


Solution

  • The way that worked for me is by using FileSystemStorage

    from django.core.files.storage import FileSystemStorage
    from django.http import HttpResponse
    
    fs = FileSystemStorage("/Users/location/where/file/is_saved/")      
    with fs.open("somefile.pdf") as pdf:
        response = HttpResponse(pdf, content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="my_pdf.pdf"'
        return response
    

    and now its prompting the user to save the file as it normally would!