如何提示用户将 pdf 文件保存到他在 django 中的本地机器?
how to prompt user to save a pdf file to his local machine in django?
我是 Django 的新手,我的项目要求我在单击 link 时提示用户打开 pdf。我的本地计算机上已有 pdf 文件,不想使用 Reportlab 重新创建它。有什么办法吗?
我试过了
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
但它返回 404 找不到页面,因为请求的 url 不在 myproject.urls
的 URLconf 中
我错过了什么?
一般情况下,当用户点击“下载”时,您可以:
- If file is not existed:
- Generate pdf file use ReportLab as you did.
- Store generated file to a public dir.
return HttpResponseRedirect(file_url_to_public_dir)
对我有用的方法是使用 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
现在提示用户像往常一样保存文件!
我是 Django 的新手,我的项目要求我在单击 link 时提示用户打开 pdf。我的本地计算机上已有 pdf 文件,不想使用 Reportlab 重新创建它。有什么办法吗?
我试过了
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
但它返回 404 找不到页面,因为请求的 url 不在 myproject.urls
的 URLconf 中我错过了什么?
一般情况下,当用户点击“下载”时,您可以:
- If file is not existed:
- Generate pdf file use ReportLab as you did.
- Store generated file to a public dir.
return HttpResponseRedirect(file_url_to_public_dir)
对我有用的方法是使用 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
现在提示用户像往常一样保存文件!