一个基于 Python + PyWebView 的现代化 SMB/CIFS 网络文件管理器桌面应用,提供直观的图形界面来访问和管理网络共享文件。
- 连接字符串支持:支持
username:password@server[:port]格式 - 域认证支持:支持
DOMAIN\\username:password@server格式 - 自动版本检测:自动识别并支持 SMBv1/SMBv2.0/SMBv2.1/SMBv3.0
- 会话类型识别:自动识别 guest session 和 user session
- 现代化界面:类似 Windows 资源管理器的用户体验
- 文件预览:无需下载支持文本文件、图片文件的在线预览
-
智能文件处理:大文件(>2MB)和不可读文件自动提示下载
-
拖拽上传:支持拖拽文件到浏览器进行上传
- 分页显示:每页显示 10 个文件,便于管理大量文件
- 目录缓存:针对目录列表启用 TTL 缓存(默认 5 分钟),频繁访问同一目录时可直接命中缓存,上传/删除后自动失效并刷新
- 响应式设计:现代化的用户界面,支持窗口大小调整
- 实时反馈:详细的操作状态提示和进度显示
- 多语言日志:使用 emoji 标记的清晰日志输出
- 文件操作:统一的按钮样式,垂直布局的操作面板
- Python 3.7+
- Windows/Linux/macOS
pip install -r requirements.txtpython smb_gui.py- 启动应用后,在连接字符串输入框中输入:
administrator:123456@192.168.10.3 - 点击连接按钮
- 连接成功后自动显示共享列表
username:password@server # 基本格式
DOMAIN\\username:password@server # 域认证
username:password@server:port # 指定端口
DOMAIN\\username:password@server:port # 域认证 + 端口
- 查看文件夹:点击文件夹名称进入目录
- 面包屑导航:点击面包屑中的任意层级快速导航
- 文件预览:点击小文件(<2MB)的文件名直接预览
- 下载文件:点击下载按钮保存到
download目录 - 上传文件:点击上传按钮或拖拽文件到浏览器
- 文件信息:点击详情按钮查看文件属性
- 文本文件:txt, log, ini, conf, md, json, xml, csv, jpg, jpeg, png, gif, bmp, webp, jsp, jspx, html, py, sh, js, css, bat
- 图片文件:jpg, jpeg, png, gif, bmp, webp
SmbClientGUI/
├── smb_gui.py # 主应用程序入口
├── smb_handler.py # SMB 操作处理器
├── requirements.txt # Python 依赖包
├── download/ # 下载文件默认保存目录
└── templates/
└── main.html # 前端用户界面
- PyWebView:桌面应用框架
- Impacket:SMB/CIFS 协议实现库
- Python 3.7+:后端开发语言
- HTML5 + CSS3:现代化用户界面
- JavaScript ES6+:前端交互逻辑
- Font Awesome:图标库
- 响应式设计:适配不同屏幕尺寸
- SMBHandler:SMB 协议操作封装
- SMBApi:前后端 API 接口
- File Manager:文件管理界面
- Path Parser:路径解析和转义处理
- Directory Cache:基于
cachetools.TTLCache的目录缓存,自动管理缓存过期与失效,配合日志能快速判断命中情况
- 默认大小:1200x950 像素
- 支持调整大小
- 调试模式:默认开启
- 分页大小:每页 10 个文件
- 预览限制:< 2MB
- 上传限制:支持所有文件类型
- 默认保存路径:
./download/ - 自动创建下载目录
- 完整下载状态反馈
- 🎯 精确的路径解析,支持复杂共享名
- 🔄 智能 Base64 编码,避免大文件栈溢出
- 🎨 现代化的 UI 设计,流畅的动画效果
- 📱 响应式布局,适配不同屏幕
- 🛡️ 完善的错误处理和用户提示
本项目基于 MIT 许可证开源。
欢迎提交 Issue 和 Pull Request 来改进这个项目!
如果您在使用过程中遇到问题,请:
- 检查 Python 版本是否符合要求
- 确认所有依赖包已正确安装
- 查看控制台输出的错误信息
- 提交 Issue 并附上详细的错误日志


