You need to enable JavaScript to run this app. 使用Python requests上传文件到Django接口时文件始终为0字节求助
优惠活动
大模型
产品
解决方案
定价
更多

使用Python requests上传文件到Django接口时文件始终为0字节求助

问题排查解决方案

1. 核心问题:文件指针位置错误

你在读取本地文件计算大小的时候,执行了testfile.seek(0, os.SEEK_END)把文件指针移动到了文件末尾,后续构造test_files的时候直接用了这个指针处于末尾的文件对象,requests上传时会从当前指针位置开始读取内容,自然读不到任何数据,导致上传的文件为0字节。

修复方法:

计算完文件大小后,把文件指针重置到文件开头即可:

testfile.seek(0, os.SEEK_END)
filesize = testfile.tell()
# 新增这行重置指针
testfile.seek(0)

2. 次要问题:DRF解析器配置不匹配

你当前视图配置的是parser_class = (FileUploadParser,),这个解析器仅适用于请求体整体为原始二进制文件的上传场景,而你用requests的files参数提交的是multipart/form-data格式的请求(同时携带文件和其他表单字段),解析器不匹配也可能导致文件读取异常。

修复方法:

把视图的解析器换成支持多部分表单的MultiPartParser和FormParser即可:

from rest_framework.parsers import MultiPartParser, FormParser

class SaveFileUploadView(APIView):
    parser_classes = (MultiPartParser, FormParser)
    # 剩余代码保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 13:15:11