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

在Django中如何获取上传文件的大小并以KB/MB单位在模板中展示

表单上传ZIP文件后获取并转换文件大小为KB/MB单位的实现方案

前端场景(提交上传前在页面模板展示)

上传时可以直接通过浏览器原生API拿到文件大小,无需请求后端:

  • 首先获取上传文件的原生对象:const zipFile = document.querySelector('input[type="file"]').files[0]
  • 调用zipFile.size属性即可得到文件的字节(B)数值
  • 用通用单位转换函数处理后直接渲染到页面模板即可,转换函数示例:
function formatFileSize(bytes) {
  if (bytes < 1024) return `${bytes} B`
  // 转换为KB
  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB`
  // 转换为MB
  return `${(bytes / (1024 * 1024)).toFixed(2)} MB`
}
  • 调用示例:const showSize = formatFileSize(zipFile.size),把showSize直接插入对应模板位置即可。

后端场景(上传完成后在服务端渲染的模板展示)

后端接收文件后可直接读取文件字节大小,转换后传入模板渲染:

  • 不同后端语言获取文件字节数的方法:
    • Python(Flask/Django):request.files['upload_file'].content_length 或文件保存后调用os.path.getsize(文件存储路径)
    • PHP:$_FILES['upload_file']['size'] 或文件保存后调用filesize(文件存储路径)
    • Java:上传的File对象调用length()方法
  • 单位转换逻辑和前端完全一致,换算后保留2位小数即可传入模板展示。

注意:如果需要做文件大小限制校验,建议前后端同时做校验,前端做体验优化,后端做最终校验避免前端篡改绕过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:00:02