Flask上传文件字节长度与实际不符问题咨询
Flask上传图片读取字节长度异常的原因分析
代码存在基础错误:
你的Flask代码有两个关键问题导致读取异常:- 未导入
request对象,Flask处理POST请求的文件上传必须依赖from flask import request来获取请求数据; - 错误直接调用
file.read(),这里的file并非上传的文件对象。正确的做法是从request.files字典中取出前端上传的文件,示例修正代码:from flask import Flask, request app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def home(): if request.method == 'POST': # 需与前端文件输入框的name属性对应,比如前端是<input type="file" name="upload_file"> upload_file = request.files.get('upload_file') if upload_file: file_bytes = upload_file.read() print(len(file_bytes)) # 此时会得到图片原始压缩二进制的长度
- 未导入
两种读取方式的本质差异:
你用skimage.io.imread()读取本地文件时,f是解码后的像素数组(比如RGB三通道的矩阵),f.tobytes()是将像素数据转换成原始字节流,这个长度是像素总数量×每个像素的字节数;而Flask正确读取的是图片的原始压缩二进制数据(比如JPG格式的压缩字节),这个长度本来就会比像素字节流小,但你当前的核心问题是代码错误导致根本没读到完整的上传文件,所以长度异常偏小。
内容的提问来源于stack exchange,提问作者Wt.N
相关产品推荐
相关产品推荐

