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

Flask上传FileStorage转PyPDF2兼容格式的技术问询

解决Flask中FileStorage对象转PyPDF2兼容格式的问题

错误原因

你遇到的TypeError是因为open()函数需要接收文件路径字符串/字节/路径对象,但你传入的是Flask的FileStorage对象,完全不符合open()的参数要求。

正确解决方案

方案一:直接使用FileStorage对象(最简洁高效)

Flask的FileStorage本身就是类文件对象,支持read()、seek()等PyPDF2所需的方法,无需额外转换,直接传给PdfFileReader即可:

from PyPDF2 import PdfFileReader
from flask import request

if request.method == 'POST':
    file = request.files.get('file')
    if file:
        # 直接用FileStorage对象初始化PdfFileReader
        pdf_reader = PdfFileReader(file)
        print(pdf_reader.numPages)
        page_obj = pdf_reader.getPage(0)
        print(page_obj.extractText())
        # 无需手动close,Flask会自动处理资源释放

方案二:通过io.BytesIO中转(兼容特殊场景)

如果遇到某些PyPDF2版本兼容性问题,或需要对文件内容做预处理,可以把文件内容读取到BytesIO字节流对象中再传入:

import io
from PyPDF2 import PdfFileReader
from flask import request

if request.method == 'POST':
    file = request.files.get('file')
    if file:
        # 将文件内容转为字节流对象
        file_stream = io.BytesIO(file.read())
        pdf_reader = PdfFileReader(file_stream)
        print(pdf_reader.numPages)
        page_obj = pdf_reader.getPage(0)
        print(page_obj.extractText())

关键说明

  • 不要用open()处理FileStorage对象,这是完全错误的用法。
  • 两种方案都不需要手动关闭文件,Flask会在请求周期结束后自动释放FileStorage的资源。

内容的提问来源于stack exchange,提问作者Prateek p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:27:51