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

如何在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")

关键说明

  1. 不用打开图片就能拿到大小,节省服务器资源,也能在文件上传过程中提前拦截大文件,有效防范DoS攻击
  2. 扩展名校验做了优化,避免因文件名无扩展名、大小写不一致导致的误判
  3. 转换后的数值保留两位小数,方便查看和校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:15:35