You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman调用API无法获取pdf_file字段文件及提取数据求助

问题排查与修复方案

代码里的核心问题:

  • 文件获取方式错误:DRF中上传的文件存在request.FILES集合里,不是request.data,用request.data.get拿不到有效的文件对象。
  • PDF文本提取逻辑混乱:你先获取了第一页对象,又用未知的extract_text(pdfs)覆盖变量;而且pdfplumber本身是通过page.extract_text()提取单页文本,不能直接把整个PDF对象传给extract_text。
  • 缺少异常处理:没有处理文件不存在、非PDF格式、读取失败等场景,容易直接抛出错误导致接口崩溃。

修正后的代码:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
import pdfplumber

class ReadPDFView(APIView):
    def post(self, request):
        # 从FILES中获取上传的PDF文件
        pdf_file = request.FILES.get('pdf_file')
        if not pdf_file:
            return Response({"error": "未上传pdf_file文件"}, status=status.HTTP_400_BAD_REQUEST)
        
        try:
            # 打开PDF文件对象
            with pdfplumber.open(pdf_file) as pdf:
                # 提取第一页文本
                if not pdf.pages:
                    return Response({"error": "PDF文件为空"}, status=status.HTTP_400_BAD_REQUEST)
                
                first_page = pdf.pages[0]
                first_page_text = first_page.extract_text()
                
                if not first_page_text:
                    return Response({"error": "第一页未提取到文本"}, status=status.HTTP_400_BAD_REQUEST)
                
                print(first_page_text)
                return Response({"first_page_text": first_page_text})
        
        except Exception as e:
            return Response({"error": f"读取PDF失败: {str(e)}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

Postman调用注意事项:

  • 请求方法选POST,填入你的接口路由地址。
  • 请求体选择form-data,键名填pdf_file,类型切换为File,然后选择本地的PDF文件上传。
  • 无需手动设置Content-Type,Postman会自动生成multipart/form-data请求头。

内容的提问来源于stack exchange,提问作者19BD1A05AW Karthik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:52:37