FastAPI中使用ezdxf读取DXF文件报错DXFStructureError求助
解决ezdxf读取DXF文件时的DXFStructureError错误
出现DXFStructureError: Invalid binary data near line: 7618的核心原因是:你将DXF文件字节直接解码为utf-8字符串的操作破坏了文件原始数据——DXF文件可能是二进制格式(AutoCAD R2007及以后版本默认保存格式),或者编码并非utf-8,强制转字符串会损坏二进制结构,导致ezdxf无法解析。
修复方案
直接使用字节流传递给ezdxf,无需转换为字符串,保留文件原始数据:
import io import ezdxf from fastapi import UploadFile async def handle_dxf_upload(upload_file: UploadFile): dxf_bytes = await upload_file.read() # 直接将字节包装为BytesIO对象 dxf_stream = io.BytesIO(dxf_bytes) doc = ezdxf.read(dxf_stream) # 后续处理DXF文档逻辑
补充说明
- ezdxf的
read()函数原生支持BytesIO输入,能兼容所有DXF格式(文本/二进制),避免编码转换带来的问题。 - 如果确认是纯文本格式DXF且编码已知(如gbk、cp1252),也可以指定编码读取,但BytesIO方式的兼容性最强,优先推荐。
内容的提问来源于stack exchange,提问作者me280872
相关产品推荐
相关产品推荐

