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
相关产品推荐
相关产品推荐

