如何在Python中获取图片的MB/KB文件大小(非宽高尺寸)
获取上传图片的文件大小用于校验
直接利用上传文件对象自带的属性就能拿到文件大小,完全不需要用Pillow,步骤如下:
- 从
request.FILES取出的文件对象本身带有size属性,返回值是字节数 - 把字节数转换成KB或MB格式,就能直接做大小限制校验
修改后的代码示例
# 假设accept_ext是你定义的允许扩展名列表,比如['jpg', 'png', 'jpeg'] accept_ext = ['jpg', 'png', 'jpeg'] images = request.FILES.getlist('files') memory_upload = [] for img in images: # 更健壮的扩展名校验:处理无扩展名、大小写问题 file_ext = img.name.split('.')[-1].lower() if '.' in img.name else '' if file_ext not in accept_ext: continue # 获取原始字节大小 file_size_bytes = img.size # 转换为KB和MB file_size_kb = file_size_bytes / 1024 file_size_mb = file_size_bytes / (1024 * 1024) # 示例:限制文件不超过5MB,按需调整 max_allowed_mb = 5 if file_size_mb > max_allowed_mb: print(f"文件 {img.name} 超过{max_allowed_mb}MB限制,拒绝上传") continue # 处理符合要求的文件 memory_upload.append(img) print(f"{img.name} 大小:{file_size_kb:.2f} KB / {file_size_mb:.2f} MB")
关键说明
- 不用打开图片就能拿到大小,节省服务器资源,也能在文件上传过程中提前拦截大文件,有效防范DoS攻击
- 扩展名校验做了优化,避免因文件名无扩展名、大小写不一致导致的误判
- 转换后的数值保留两位小数,方便查看和校验
内容的提问来源于stack exchange,提问作者Xcode
相关产品推荐
相关产品推荐

