FileField PDF无法打开Django

2024-10-04 09:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在我的视图中创建并保存PDF:

views.py

@login_required(login_url="/login")
def PackingListView(request):
    if request.method == "POST":
        form = PackingListForm(request.POST)
        if form.is_valid():
            if 'preview' in request.POST:
                ...

            elif 'save' in request.POST:
                pdf_contents = form
                file = ContentFile(pdf_contents)

                item = PackingListDocuments.objects.get(pk=1)

                item.PackingListDocument.save('test.pdf', file) #saving as FileField in model


                form.save()
                messages.success(request, "Success: Packing List Has Been Created!")
                return redirect('HomeView')

我看到test.pdf已保存。我可以在我的文件资源管理器和管理员中看到它,但每次我试图打开它时,文件似乎都已损坏。我需要在我的代码中添加或减去什么才能使它工作

谢谢

更新:

我已将行:file = ContentFile(pdf_contents)更改为file = File(pdf_contents)

但现在我收到一个属性错误,即“PackingListForm”对象没有属性“read”


Tags: 文件intestformifpdfrequestsave
1条回答
网友
1楼 · 发布于 2024-10-04 09:25:37

我相信错误一定与这条线路有关

file = ContentFile(pdf_contents)

注意,从docs

The ContentFile class inherits from File, but unlike File it operates on string content (bytes also supported), rather than an actual file. For example:

因此,我猜想您没有将字符串/字节类型作为参数传递给ContenetFile对象

试着找到它的类型。您还可以通过执行String(pdf_contents)将其转换为字符串类型

相关问题 更多 >